先看一个例子:解决为什么我们需要重载
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(double real =0,double imag=0):real(real),imag(imag){}; //构造函数,包含有参数的和没有参数的,默认为0,0
Complex(const Complex & p){real = p.real;imag = p.imag;} //复制构造函数
~Complex(){} //析构函数
//以下为成员函数
void output();
void copy(const Complex &p);
Complex add(const Complex & p);
private:
double real ,imag;
};
void Complex::output()
{
if(imag >=0)
{
char flag;
flag ='+';
cout <<real <<flag<<imag <<'i' <<endl;
}
else
cout <<real <<imag <<'i' <<endl;
}
void Complex::copy(const Complex &p)
{
real = p.real;
imag = p.imag;
}
Complex Complex::add(const Complex & p)
{
real += p.real;
imag += p.imag;
return *this;
}
int main()
{
Complex a(3,4),b(4,-5),c;
a.output(); //输出a
// a.copy(b); //将b的值copy给a
//a.output(); //从新输出a
b.output();
c = a.add(b);
c.output();
return 0;
}
运算结果为:
该过程可以实现复数的加减,但是调用的为成员函数,在具体的语义中部容易理解,