2012-08-15 81 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