傻瓜结构

Structures for dummies

本文关键字:结构 傻瓜      更新时间:2023-10-16

我正在研究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,除了默认的成员保护,它有成员变量ri,阅读这里了解更多信息: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);
    }
};

如果你有这方面的具体问题,你可以评论这篇文章,我会尽力帮助解释。