c++中函函数定义的语法
Syntax of the functor definition in c++?
我有一个函数减速的例子;
#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;
}
我的"What"是关于public:后面的那行。我不明白myFunctorClass (int x) : _x( x ) {}
这一行的语法。在做什么以及使用这种语法规则的另一个实例是什么?
myFunctorClass (int x) : _x( x ) {}
是构造函数。它是一个函数,在类的对象实例化时执行。
: _x(x)
部分为初始化列表。这意味着它用一个值初始化一个成员(在本例中,值x
用于初始化_x
),或者初始化一个父类。
在这种情况下,代码在功能上等于
myFunctorClass (int x) {
_x = x;
}
注意这个等价并不总是成立的。初始化和赋值与复制/移动构造之间有细微的区别。
这只是myFunctorClass
的构造函数的定义。也许只是: _x( x )
部分让你感到困惑。myFunctorClass (int x) {}
对你来说有意义吗?: _x( x )
部分是成员初始化列表,表示成员_x
应该用参数x
的值初始化。
这是类的构造函数。它正在初始化数据成员(在:)之后)。构造函数的函数体为空
您正在使用类构造函数成员初始化列表将成员_x
初始化为x
,该成员作为5
传递给myFunctorClass addFive( 5 );
中的构造函数
相关文章:
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- C++使用 rand 定义函数语法
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 创建具有验证和语法突出显示的自定义 printf
- C++类定义语法
- C++定义/赋值语法
- 标准库中的任何正则表达式语法是否支持 (?(定义)用于子模式参考?
- 带有自定义类的共享指针语法背后的任何原因,如下所示
- 在语法树中的节点上定义的层次结构的表达式模板
- OpenCV - Ptr 语法和类定义/声明 - 混淆?
- 为什么C++没有简洁的语法允许在不定义计数器的情况下多次执行操作?
- 通过该类中定义的指针调用类方法时的语法
- 如何在源文件中定义类并将其声明在标题文件中(而不必使用`class :: method'语法定义类方法)
- 是C 中的语法错误,以结束与A}的类定义中的函数
- Linux正确的语法将通过config传递libstdc 的自定义目录
- 将变量定义为数组和正确的语法
- 使用自定义对象的地图使用MAP?可能是语法问题
- 你能解释一下这个C++函数定义的语法吗?
- 语法意外失败提升::精神语法定义