0

我有一个例子仿函数减速;

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

我的“什么”是关于公众之后的那一行: 。我不明白该行的语法myFunctorClass (int x) : _x( x ) {}。又是在做什么,又有什么实例使用这种语法规则?

4

4 回答 4

1

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

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

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

myFunctorClass (int x) {
    _x = x; 
}

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

于 2013-05-24T13:44:43.270 回答
0

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

于 2013-05-24T13:39:42.663 回答
0

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

于 2013-05-24T13:40:31.480 回答
0

您正在使用类构造函数成员初始化器列表将您的成员初始化_xx传递5给构造函数的成员myFunctorClass addFive( 5 );

于 2013-05-24T13:40:48.050 回答