这里我试图使用书籍和互联网实现复杂数字的类。这是代码:
#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;
}
它编译得很好,但我找不到在屏幕上打印数字的实部和虚部的方法?
答案 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;
在我看来,这将以更清晰的方式显示表示。