复数类实行实数加复数
定义一个复数类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 )