Зачем мне использовать функцию-член, если я могу передать статическую функцию ссылкой на объект?
Например:
#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;
}
Это больше, чем стилистическая вещь? Насколько я понимаю, функции-члены создаются для каждого экземпляра объекта, а статические функции - нет, и, поскольку вы можете заставить статические функции работать для каждого экземпляра, как в приведенном выше примере, не должно ли быть немного эффективнее создавать вместо этого статические функции функций-членов?