【发布时间】:2015-01-15 17:45:26
【问题描述】:
我正在研究 C++ 中的结构...我了解它的基本概念,据我所知,它旨在以更紧凑的方式列出一系列项目....但是我遇到了一个示例我不明白发生了什么:
struct cuComplex {
float r; // real part of a complex number
float i; // imaginary part of a complex number
/* !!! I DON'T UNDERSTAND FROM HERE !!! */
cuComplex( float a, float b ) : r(a), i(b) {}
float magnitude2( void ) { return r * r + i * i; }
cuComplex operator*(const cuComplex& a) {
return cuComplex(r*a.r - i*a.i, i*a.r + r*a.i);
}
cuComplex operator+(const cuComplex& a) {
return cuComplex(r+a.r, i+a.i);
}
/* !!! TO HERE. !!! */
};
在我看来,内部定义了某种函数,但我不明白这是怎么可能的以及我应该如何解释它。
问。是否有一些参考资料可供我阅读,以便更好地了解正在发生的事情?
【问题讨论】:
-
您可以为
struct定义函数,就像class可以具有函数一样。他们正在定义 1) 构造函数 2)magnitude2函数 3)*乘法运算符 4)+加法运算符 -
你至少应该知道你正在学习什么语言,并且还要注意 C != C++。很多时候,一个“自然”的答案会与另一个大不相同(甚至可能无法编译)。
-
请不要编辑掉这是作为 C 问题提出的事实?整个问题在于他试图在 C 编译器中编译 C++ 代码。
-
代码实际上是 cuda "C" 研究案例的一部分......因为我不是程序员,而且我才刚开始,我相信区分 c 和 c++ 的困难是合理的
-
@FedericoGentile 对不起所有的仇恨者,如果你能坚持下去,这里有很多乐于助人的人。 +1 鼓励你。 meta.stackoverflow.com/questions/266370/…
标签: c++ methods struct constructor operator-overloading