C++重载运算符“/”,使两个复数相除。
但去掉主函数中的endl才能正常运行,查了相关资料还是没明白,请问这是为什么呢?
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(float x=0,float y=0){real=x;imag=y;}
Complex operator/(Complex &c2);
void display()
{
if (imag>0)
cout<<real<<'+'<<imag<<'i'<<endl;
else
cout<<real<<imag<<'i'<<endl;
}
private:
float real;
float imag;
};
Complex Complex::operator/(Complex &c2)
{
Complex c;
c.real=(real*c2.real-imag*c2.imag)/(c2.real*c2.real-c2.imag*c2.imag);
c.imag=(real*c2.imag+c2.real*imag)/(c2.real*c2.real-c2.imag*c2.imag);
return c;
}
int main()
{
Complex complex1(1,2),complex2(3,4),complex;
cout<<"complex1="; complex1.display();
cout<<"complex2="; complex2.display();
complex=complex1/complex2;
cout<<"complex=";complex.display()<<endl;
return 0;
}