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

发布于 2024-10-14 18:25:43 字数 546 浏览 5 评论 0原文

可能的重复:
C++ 构造函数名称后面的冒号有什么作用?

我正在读一本关于 CUDA 和 CUDA 的书我在阅读此 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)  {}

这叫什么,我可以了解一下吗?

Possible Duplicate:
What does a colon following a C++ constructor name do?

I'm reading a book about CUDA & I'm having trouble reading this C++ syntax. I'm not sure what to search for so that's why I'm posting here.

struct cuComplex {
    float   r;
    float   i;
    cuComplex( float a, float b ) : r(a) , i(b)  {}
}

What does the cuComplex statement do? Specifically:

cuComplex( float a, float b ) : r(a) , i(b)  {}

what is this called so I can learn about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我喜欢麦丽素 2024-10-21 18:25:43

这是C++语法。

cuComplex( float a, float b )

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

: r(a) , i(b)

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

剩下的就是一个空函数实现。

This is C++ syntax.

cuComplex( float a, float b )

is the constructor defined for this struct.

: r(a) , i(b)

is called member initialization. Here the local members r and i are set to the parameters a and b passed to the constructor.

The rest is an empty function implementation.

〃安静 2024-10-21 18:25:43

那是 C++,而不是 C,因为 C 结构不能以这种方式包含函数(它们可以包含函数指针,但这与问题无关)。这是“cuComplex”类型的构造函数,需要两个浮点数。它使用传入的值初始化两个成员变量“r”和“r”。

每个评论的编辑: r(a) 和 i(b) 部分正在使用构造函数的参数值初始化成员变量。

That is C++, not C, as C structs cannot contain functions in that manner (they could contain a function pointer, but that is irrelevant to the question). That is a constructor for the type "cuComplex" that takes two floats. It initializes the two member variables 'r' and 'r' with the passed in values.

EDIT per comment: The r(a) and i(b) parts are initializing the member variables with the values of the parameters to the constructor.

喜爱纠缠 2024-10-21 18:25:43

: cuComplex ctor 中的 r(a) , i(b) 在分配时用括号之间的值构造内存。

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
}

: r(a) , i(b) in cuComplex ctor construct memory at allocation with value between parentheses.

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文