首页 > 代码库 > 6、多态性-2、运算符重载

6、多态性-2、运算符重载

1、c++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型(如类),也需要有类似的运算操作。例如,下面的程序段定义了一个复数类:

class complex

{

  public:

    complex(double r=0.0,double i=0.0){real=r;imag=i;}

    void display();

  private:

    double real;

    double imag;

};

于是我们可以这样声明复数类的对象:complex a(10,20),b(5,8);

那么如何对这两个对象进行加法运算呢?我们当然希望能使用"+"运算符,写出表达式"a+b",但是编译的时候会出错,因为编译器不知道该如何完成这个加法。这时候就需要我们自己编写程序来说明"+"在作用于complex类对象时,该实现什么样的功能,这就是运算符重载

运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为。其实质就是函数重载,在实现过程中,首先把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的函数,这个过程是在编译过程中完成的

2、运算符重载的规则

运算符重载的规则如下:

 

6、多态性-2、运算符重载