请解释我的结构定义中的冒号?

nin*_*eer 2 c++ syntax ctor-initializer

可能重复:
C++构造函数名后的冒号是做什么的?

我正在读一本关于CUDA的书,我在阅读这个C++语法时遇到了麻烦.我不知道该搜索什么,这就是我在这里发帖的原因.

struct cuComplex {
    float   r;
    float   i;
    cuComplex( float a, float b ) : r(a) , i(b)  {}
}
Run Code Online (Sandbox Code Playgroud)

cuComplex声明的作用是什么?特别:

cuComplex( float a, float b ) : r(a) , i(b)  {}
Run Code Online (Sandbox Code Playgroud)

这叫什么,所以我可以了解它?

Bjo*_*rnD 6

这是C++语法.

cuComplex( float a, float b )
Run Code Online (Sandbox Code Playgroud)

是为此结构定义的构造函数.

: r(a) , i(b)
Run Code Online (Sandbox Code Playgroud)

被称为成员初始化.这里本地成员r和i被设置为传递给构造函数的参数a和b.

其余的是一个空函数实现.