当我可以将静态函数传递给对象的引用时,为什么还要使用成员函数?
例如:
#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;
}
这不仅仅是风格上的事情吗?我的理解是,成员函数是为每个对象实例创建的,而静态函数不是——而且由于您可以像上面的示例一样使静态函数在每个实例的基础上运行,因此创建静态函数不应该更有效吗?成员函数?