可能重复:
What does a colon following a C++ constructor name do?
我正在读一本关于CUDA& amp;我在阅读这个C ++语法时遇到了麻烦。我不知道该搜索什么,这就是我在这里发帖的原因。
struct cuComplex {
float r;
float i;
cuComplex( float a, float b ) : r(a) , i(b) {}
}
cuComplex
声明有什么作用?具体做法是:
cuComplex( float a, float b ) : r(a) , i(b) {}
这叫什么,所以我可以了解它?
答案 0 :(得分:6)
这是C ++语法。
cuComplex( float a, float b )
是为此结构定义的构造函数。
: r(a) , i(b)
称为成员初始化。这里本地成员r和i被设置为传递给构造函数的参数a和b。
其余的是一个空函数实现。
答案 1 :(得分:1)
这是C ++,而不是C,因为C结构不能以这种方式包含函数(它们可以包含函数指针,但这与问题无关)。这是“cuComplex”类型的构造函数,它带有两个浮点数。它使用传入的值初始化两个成员变量'r'和'r'。
每条评论的编辑:r(a)和i(b)部分正在使用构造函数的参数值初始化成员变量。
答案 2 :(得分:1)
: r(a) , i(b)
ctor在分配时用括号内的值构造内存。
struct cuComplex {
const float r;
const float i;
cuComplex( float a, float b ) : r(a) , i(b) {} // ok
}
struct cuComplex {
const float r;
const float i;
cuComplex( float a, float b ) {
r = a;
i = b;
} // fail because once allocated, const memory can't be modified
}