- 论坛徽章:
- 0
|
小弟在自学谭浩强的<<C++程序设计>>,其中第十章运算符重载中的一条习题发现如下问题:
#include<iostream>
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r,double i):real(r),imag(i){}
void display();
friend Complex operator+(double,Complex &);
friend Complex operator+(Complex &,double);
friend Complex operator+(Complex &,Complex &);
private:
double real;
double imag;
};
void Complex::display()
{cout<<"("<<real;
if(imag>0) cout<<"+";
cout<<imag<<"i)";
}
Complex operator+(double d,Complex &c)
{return(Complex(d+c.real,c.imag));}
Complex operator+(Complex &c,double d)
{return(Complex(d+c.real,c.imag));}
Complex operator+(Complex &ca,Complex &cb)
{return(Complex(ca.real+cb.real,ca.imag+cb.imag));}
int main()
{Complex c1(3,4),c2(5,6),c3;
c3=c1+c2;
c3=c3+100.56;
c3.display(); //这个成功
cout<<endl;
/*c3=c2+c1+100.65;
c3.display();
cout<<endl;*/ //这一部分失败
system("pause");
}
请问为什么c3=c2+c1+100.65会失败的?用的软件是dev-c++ |
|