wxty 发表于 2013-1-28 17:54:54

C++中使用引用类型参数时,为什么是调用类型转换函数?

本帖最后由 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;
}

wxty 发表于 2013-1-28 17:58:38

刚编辑了下,忘记怎么论坛贴代码了。
页: [1]
查看完整版本: C++中使用引用类型参数时,为什么是调用类型转换函数?