当我可以传递静态函数对对象的引用时,为什么会使用成员函数?带有对象引用的成员函数vs静态函数
例如:
#include <iostream>
class Widget{
private:
int foo;
public:
Widget(){
foo = 0;
}
static void increment(Widget &w){
w.foo++;
std::cout << w.foo << std::endl;
}
};
class Gadget{
private:
int foo;
public:
Gadget(){
foo = 0;
}
void increment(){
foo++;
std::cout << foo << std::endl;
}
};
int main(int argc, const char * argv[]){
Widget *w = new Widget();
Widget::increment(*w);
Gadget *g = new Gadget();
g->increment();
return 0;
}
比风格的东西这个吗?我的理解是,成员函数是根据对象实例创建的,而静态函数不是 - 因为您可以像上例中那样使每个实例的静态函数运行,所以创建静态函数不应该稍微高效成员函数?
你不能有虚拟的静态方法。 – 2012-08-12 21:30:22