|  | 
 
20鱼币 
| 本帖最后由 风之残月 于 2014-11-10 10:19 编辑 
 运算符重载我总觉得没什么逻辑性,变化多端。不知怎么写才是前置,怎么写能变成后置
 
 
 #include <iostream>
 using namespace std;
 class complex
 {
 private:
 double real, imag;
 public:
 complex(double r = 0.0, double  i = 0.0)
 {
 real = r;
 imag = i;
 }
 complex operator + (const complex & CC)     //百科说这个operator和+运算符要看成整体?
 {                                                                         //const complex & CC 等值于取右操作数的对象吗?
 complex c(real + CC.real, imag + CC.imag);   //想知道运算符重载的原理,现在不懂原理,找不出规律\
 return c;                                                           //全是照抄代码?
 }
 void disp()
 {
 cout << real << "," << imag << endl;
 }
 };
 int main()
 {
 complex cx1(1.0, 2.0), cx2(3.0,4.0);
 complex cx3 = cx1 + cx2;
 cx3.disp();
 return 0;
 }
 
 
 | 
 
最佳答案
查看完整内容 你代码中的  cx1 + cx2  可以看成  cx1.operator+(cx2);//自己对照这个函数,这个函数是Complex类的成员函数,函数名叫operator+,只有一个参数,如果不死扣的话,参数可以是complex类型的(不一定非要是const complex&类型的),总之参数类型写得使cx1.operator+(cx2);看上去正确就可以了。
      cx1 + cx2  也可以看成  operator+(cx1, cx2);如果这样看的话,就应该实现为一个普通的函数,它有两个参数,其声明可以是  complex  ... |