//一般进行运算符“+”的重载的代码如下
#include<iostream>
using namespace std;
class complex
{
private:
int i,r;
public:
complex(int a=0,int b=0):r(a),i(b){};
complex operator+(complex b);
void printf()
{
cout<<r<<"+"<<i<<"i"<<endl;
}
};
complex complex::operator+(complex b)
{
return complex(r+b.r,i+b.i);
}
int main()
{
complex b1(3,4),b2(4,5),b3;
b3=b1+b2;
b3.printf();
return 0;
}
//当改成如下时
#include<iostream>
using namespace std;
class complex
{
private:
int i,r;
public:
complex(int a=0,int b=0):r(a),i(b){};
complex operator+(complex b);
void printf()
{
cout<<r<<"+"<<i<<"i"<<endl;
}
};
complex complex::operator+(complex b)
{
return complex(r,i);
}
int main()
{
complex b1(3,4),b2(4,5),b3;
b3=b1+b2;
b3.printf();
return 0;
}
//你会发现第一个代码运行时结果为7+9i;但第二个代码运行则为3+4i,其实第二个只是把b1的值給复制进来了。return(r,i)是通过this指针进行传值的,所以此时的return中的r和i是b1里面的;这点要多加注意;所以第二个return(r+b.r,i+b.i)就是b1和b2进行相减。