首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

复数类实行实数加复数,该如何解决

2012-03-14 
复数类实行实数加复数定义一个复数类Complex,重载运算符“+”,实现复数的加法运算。要求参加运算的两个运算量

复数类实行实数加复数
定义一个复数类Complex,重载运算符“+”,实现复数的加法运算。要求参加运算的两个运算量可以都是复数类对象,也可以一个是复数类对象,而另一个是double数,它们顺序任意。在主函数中,分别求复数和复数、double数和复数、复数和double数之间的和。
==
这道题,我这样完成不知道符不符合题意呢?

#   include   <iostream>
using   namespace   std;
class   Complex
{
public:
Complex(double   r=0.0,double   i=0.0){real=r;imag=i;}
Complex   operator   +   (Complex   c2)
{
return   Complex(real+c2.real,imag+c2.imag);
}
void   display()
{
cout < < "( " < <real < < ", " < <imag < < ") " < <endl;
}
private:
double   real;
double   imag;
};
int   main()
{
Complex   a1(5,4),a2(2,3);     //complex   and   complex
Complex   b1(6.1),b2(2,3);     //double   and   complex
Complex   c1(8,3),c2(5.3);     //complex   and   double
Complex   d1,d2,d3;
d1=a1+a2;
d2=b1+b2;
d3=c1+c2;
d1.display();
cout < <endl;
d2.display();
cout < <endl;
d3.display();
return   0;
}

[解决办法]
Complex(double r=0.0,double i=0.0){real=r;imag=i;}
Complex b1(6.1),b2(2,3);//像这样定义对象,double值都算到实部了,虚部默认取0.0,所以实际上还是两个复数相加,但题目没有规定,也不好说对不对。
[解决办法]
会楼上,没错
对于默认参数的问题,很多书上都有比较详细的解释,c++中传递参数都是从左向右赋值的,所以为了避免歧义就不允许写int f(int=0,int)这种函数了
[解决办法]
Complex(double r=0.0,double i=0.0)
参数的缺省值,可以使用重载函数这样的替代方案
Complex(double r )
Complex(double r,double i )

热点排行