C++模板和重载,看看怎么改啊

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:34:57
#include<iostream.h>
template<class T>
class complex
{T real,imag;
public:
complex<T>(T r=0,T i=0)
{real=r;imag=i;}
friend complex operator +(const complex &a,const complex &b);
friend ostream&operator<<(ostream&s,const complex&c);
friend istream&operator>>(istream&s,complex&c);
};
template<class T>
complex operator +(const complex<T> &a,const complex<T> &b)
{complex<double> temp;
temp.real=a.real+b.real;
temp.imag=a.imag+b.imag;
return temp;
}
template<class T>ostream&operator<<(ostream&s,const complex<T>&c)
{s<<c.real;
s<<"+";
s<<c.imag;
s<<"i";
s<<endl;
return s;
}
template<class T>istream&operator>>(istream&s,complex<T>&c)
{s>>c.real;
s>>c.imag;

必须带上参数类型。。
#include<iostream.h>
template<class T>
class complex
{
T real,imag;
public:
complex<T>(T r=0,T i=0)
{
real=r;imag=i;
}
friend complex<T> operator +(const complex<T> &a,const complex<T> &b);
friend ostream&operator<<(ostream&s,const complex&c);
friend istream&operator>>(istream&s,complex&c);
};

template<class T>
complex<T> operator +(const complex<T> &a,const complex<T> &b)
{
complex<double> temp;
temp.real=a.real+b.real;
temp.imag=a.imag+b.imag;
return temp;
}
template<class T>ostream&operator<<(ostream&s,const complex<T>&c)
{
s<<c.real;
s<<"+";
s<<c.imag;
s<<"i";
s<<endl;
return s;
}
template<class T>istream&operat