用C ++实现复数的类

时间:2010-08-27 09:51:41

标签: c++

这里我试图使用书籍和互联网实现复杂数字的类。这是代码:

#include <iostream>
#include <ostream>
using namespace std;
class  Complex{
    private:
        float re,im;

    public:
        Complex(float x,float y){
            re=x;
            im=y;
        }

        float Re() const{
            re;
        }

        float Im() const {
            return  im;
        }

        Complex&  operator*=(const Complex& rhs){
            float t=Re();
            re = Re()*rhs.Re()-Im()*rhs.Im();

            im = t*rhs.Im()+Im()*rhs.Re();
            return *this;
        }
};

ostream& operator<<(ostream& t,const Complex& c){
    t << c.Re() << " " << c.Im(); 
    return t;
}

int main(){
    Complex s(3.45,23.12);
    return 0;
}

它编译得很好,但我找不到在屏幕上打印数字的实部和虚部的方法?

3 个答案:

答案 0 :(得分:2)

#include <iostream>

// ...

Complex s(3.45,23.12);
std::cout << s; 

请参阅 this answer ,了解为什么我认为using namespace std;是一个坏主意。

另外,我认为实现一个复数类是一个练习吗?因为标准库已经有一个。

答案 1 :(得分:0)

请参阅标题<complex>,其中包含您可能要使用的std::complex ...,除非您想将其作为练习实现。

这是GCC头文件的a link;所有的基本操作都非常简单。

至于屏幕上的打印,出了什么问题?你的operator<<看起来不错。

答案 2 :(得分:0)

上述解决方案将有效。然而,我会改变&lt;&lt;实现如下以获得更可读的输出(如果这是你想要的):

t<<c.Re()<< "  + i"<<c.Im(); return t;

在我看来,这将以更清晰的方式显示表示。