|
本帖最后由 wxty 于 2013-1-28 17:57 编辑
//类定义
class Complex
{
public:
Complex(){real=0; imag=0;}
Complex(double r, double i):real(r),imag(i){}
Complex(double r){real=r;imag=0;}//转换构造函数
//operator double(){return real;}//类型转换函数//(1)
void disp();
friend Complex operator+ (Complex, Complex);//(3)
private:
double real;
double imag;
};
void Complex::disp()
{
cout<<"("<<real<<","<<imag<<"i"<<")"<<endl;
}
Complex operator+ (Complex c1, Complex c2)//(3)
{
return Complex(c1.real+c2.real, c1.imag+c2.imag);
}
//主函数
int main()
{
double d1=11;
Complex c1(12.5, -15.5);//,c2;
Complex c2 = c1+d1;//注释:d1默认转换为Complex;
//若增加(1)处的类型转换函数,则发生二义性错误;
//若再将(3)参数定义为&引用类型,则计算结果虚部始终为0,
//此时为什么调用了类型转换函数,而不是转换构造函数???
//可以使用Complex c2 = c1+Complex(d1);//显示调用转换构造函数;
c1.disp();
cout<<d1<<"..."<<endl;
c2.disp();
return 0;
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|