功能和仿函数之间的区别

时间:2013-10-13 18:27:14

标签: c++ functor

我正在尝试编写以下代码:

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;
}

foobar之间有什么区别?

1 个答案:

答案 0 :(得分:1)

bar是一个函数,但foo是一个函数对象。所以,如果(例如)你会写一些类似的东西:

std::for_each(myContainer.begin(), myContainer.end(), foo); 

(见this) 然后将为容器中的每个对象调用重载的MyClass :: operator()。与函数指针相比​​,函数对象的主要优点是它们可以嵌套,这意味着您可以在任何地方定义函数类,包括另一个类甚至方法。此外,它非常适合在模板函数中使用,因为Function可以是模板类型。