2012-08-15 79 views
0

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

#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

任何想法我要去哪裏的地方。 在此先感謝。

+0

juanchopanza現在刪除的答案已經說過了,但我認爲值得重複:缺省(無參數)構造函數非常糟糕,因爲它使成員未初始化。至少通過'complexNumber():re(),im(){}'來初始化它們。 – delnan 2012-08-15 21:10:05

回答

5

您需要從函數中返回一個值。你的編譯器沒有警告你這個嗎?

+2

+1讓編譯器編寫者高興:留意他們的警告!他們花時間把它們放在編譯器中! – 2012-08-15 21:04:58

+0

+1啊,他們警告... – ApprenticeHacker 2012-08-15 21:06:29

+0

感謝您的幫助:) – jw1294 2012-08-15 21:07:45