我有一个函子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 ) {}
的语法。做什么以及使用这种语法规则的另一个实例是什么?
答案 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 );