傻瓜结构
Structures for dummies
我正在研究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. !!! */
};
在我看来,内部定义了某种功能,但我不明白这怎么可能以及我应该如何解释它。
问。是否有一些参考资料可以阅读有关此内容的信息,以便更好地了解正在发生的事情?
C++中的结构与类基本相同,但有一个区别。在类中,定义访问说明符是私有的,而在结构
中它是公共的。因此,您在该代码中看到的是:-
构造函数,重载运算符 +,* 为您结构和计算复数量级的方法。
这
就像一个class
,除了默认的成员保护,它有成员变量r
和i
,阅读这里了解更多信息:http://www.cplusplus.com/doc/tutorial/classes/
struct cuComplex {
float r;
float i; // imaginary part of a complex number
这是一个构造函数,请阅读此处了解更多信息:http://www.cplusplus.com/doc/tutorial/classes/#constructors
cuComplex( float a, float b ) : r(a), i(b) {}
这是一个方法或成员函数,如果你已经完成了第一个,就像你读过的那样,但如果你想要一个更简洁的例子,请阅读这里:http://en.wikipedia.org/wiki/C%2B%2B_classes#Member_functions
float magnitude2( void ) { return r * r + i * i; }
这些是重载的operator
在这里阅读更多:http://www.cplusplus.com/doc/tutorial/templates/#overloading_operators
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);
}
};
如果你有这方面的具体问题,你可以评论这篇文章,我会尽力帮助解释。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 傻瓜结构