我剛剛瞭解運算符重載問題,並且想試圖創建一個表示複數的對象。我寫道:運算符超載的錯誤答案
#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