我刚刚了解运算符重载问题,并且想试图创建一个表示复数的对象。我写道:运算符超载的错误答案
#include <iostream>
using namespace std;
class complexNumber
{
public:
double re, im;
complexNumber(){}
complexNumber(double a, double b)
{
re = a;
im = b;
}
complexNumber operator+ (complexNumber b)
{
complexNumber c;
c.re = re + b.re;
c.im = im + b.im;
}
complexNumber operator- (complexNumber b)
{
complexNumber c;
c.re = re - b.re;
c.im = im - b.im;
}
};
int main()
{
complexNumber a(1,2);
complexNumber b(4,6);
complexNumber c;
complexNumber d;
c = a + b;
d = a - b;
cout << c.re << " + " << c.im << "i" << endl;
cout << d.re << " + " << d.im << "i" << endl;
}
而且我得到的结果是:
2.44156e + 253 + 6.95225e-308 1
2.44156e + 253 + 6.95225e-308 1
任何想法我要去哪里的地方。 在此先感谢。
juanchopanza现在删除的答案已经说过了,但我认为值得重复:缺省(无参数)构造函数非常糟糕,因为它使成员未初始化。至少通过'complexNumber():re(),im(){}'来初始化它们。 – delnan 2012-08-15 21:10:05