c ++中functor定义的语法?

时间:2013-05-24 13:37:47

标签: c++ syntax

我有一个函子functor减速作为;

#include <iostream>

class myFunctorClass
{
    public:
        myFunctorClass (int x) : _x( x ) {}
        int operator() (int y) { return _x + y; }
    private:
        int _x;
};

int main()
{
    myFunctorClass addFive( 5 );
    std::cout << addFive( 6 );

    return 0;
}

我的“什么”是关于 public:之后的行。我不理解行myFunctorClass (int x) : _x( x ) {}的语法。做什么以及使用这种语法规则的另一个实例是什么?

4 个答案:

答案 0 :(得分:1)

myFunctorClass (int x) : _x( x ) {}是构造函数。它是一个在实例化类的对象时执行的函数。

: _x(x)部分是初始化列表。这意味着它使用值初始化成员(在这种情况下,值x用于初始化_x),或初始化父类。

在这种情况下,代码在功能上等于

myFunctorClass (int x) {
    _x = x; 
}

请注意,这种等价并不总是正确的。初始化和赋值以及复制/移动构造之间存在细微差别。

答案 1 :(得分:0)

这只是myFunctorClass构造函数的定义。也许正是: _x( x )部分令你感到困惑。 myFunctorClass (int x) {}会对你有意义吗? : _x( x )部分是成员初始化列表,并表示应使用参数_x的值初始化成员x

答案 2 :(得分:0)

这是类的构造函数。它正在初始化数据成员(在:)之后。并且构造函数的函数体为空。

答案 3 :(得分:0)

您正在使用类构造函数成员初始值设定项列表将您的成员_x初始化为x,并将5初始化为myFunctorClass addFive( 5 );

中的构造函数