![]() |
#2
rjsp2016-06-21 12:27
|

#include <iostream>
using namespace std;
class Complex
{
public:
Complex( ){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator +(Complex &c2); //声明复数相加函数
void display( );
private:
double real; //实部
double imag; //虚部
};
Complex Complex∷operator +(Complex &c2)
{
Complex c;
c.real=real+c2.real; //实现两个复数实部相加
c.imag=imag+c2.imag; //实现两个复数虚部相加
return c;
}
void Complex∷display( )
{
cout<<″(″<<real<<″,″<<imag<<″i)″<<endl;
}
int main( )
{
Complex c1(1,2),c2(3,-4),c3; //定义3个复数对象
c3=c1+c2;
cout<<″c1=″; c1.display( ); //输出c1的值
cout<<″c2=″; c2.display( ); //输出c2的值
cout<<″c1+c2=″; c3.display( ); //输出c3的值
return 0;
}
这是书上重载+号,进行两个复数相加的代码,请问为什么红色代码处要实现两个复数相加只传一个参数进去呢?那个real是属于哪个对象的呢? using namespace std;
class Complex
{
public:
Complex( ){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator +(Complex &c2); //声明复数相加函数
void display( );
private:
double real; //实部
double imag; //虚部
};
Complex Complex∷operator +(Complex &c2)
{
Complex c;
c.real=real+c2.real; //实现两个复数实部相加
c.imag=imag+c2.imag; //实现两个复数虚部相加
return c;
}
void Complex∷display( )
{
cout<<″(″<<real<<″,″<<imag<<″i)″<<endl;
}
int main( )
{
Complex c1(1,2),c2(3,-4),c3; //定义3个复数对象
c3=c1+c2;
cout<<″c1=″; c1.display( ); //输出c1的值
cout<<″c2=″; c2.display( ); //输出c2的值
cout<<″c1+c2=″; c3.display( ); //输出c3的值
return 0;
}