1

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

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

4

1 回答 1

1

bar是一个函数,但是foo是一个函数对象。因此,如果(例如)您将编写如下内容:

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

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

于 2013-10-13T19:20:32.207 回答