我正在尝试编写以下代码:
class MyClass{
public:
virtual int operator()()=0;
}
int bar()
{
return 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
class : public MyClass{
int operator()(){
return 1;
}
} foo;
}
foo
和bar
之间有什么区别?
答案 0 :(得分:1)
bar
是一个函数,但foo
是一个函数对象。所以,如果(例如)你会写一些类似的东西:
std::for_each(myContainer.begin(), myContainer.end(), foo);
(见this)
然后将为容器中的每个对象调用重载的MyClass :: operator()。与函数指针相比,函数对象的主要优点是它们可以嵌套,这意味着您可以在任何地方定义函数类,包括另一个类甚至方法。此外,它非常适合在模板函数中使用,因为Function
可以是模板类型。