如何重载"<<"符号?
各位高手,我定义了一个复数类,现想重载<<符号使它能输出复数(形如3+4i),但用下面的代码不行,请高手指点,谢谢!
#include<iostream.h>
class complex
{
public:
complex(){real=imag=0.0;}
complex(double r){real=r;imag=0.0;}
complex(double r,double i){real=r;imag=i;}
friend complex operator +(complex c1,complex c2);
void operator <<();
friend void print(complex c);
private:
double real,imag;
};
complex operator +(complex c1,complex c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}
inline void complex::operator <<()
{
if(imag<0)
cout<<real<<imag<<"i"<<endl;
else
cout<<real<<"+"<<imag<<"i"<<endl;
}
void print(complex c)
{
if(c.imag<0)
cout<<c.real<<c.imag<<"i"<<endl;
else
cout<<c.real<<"+"<<c.imag<<"i"<<endl;
}
void main()
{
complex c1(6),c2(2.3,4.5);
print(c1+c2);//这个可以
cout<<c2;//出错
}