6多态性-2运算符重载

Posted 郭润

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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运算符重载的主要内容,如果未能解决你的问题,请参考以下文章

多态性——运算符重载

在C++中,啥是运算符重载?啥是虚函数?

重载赋值运算符 - 多态容器

C++基础——C++面向对象之重载与多态基础总结(函数重载运算符重载多态的使用)

C++ 继承多态关系中的赋值运算符的重载=operator()

C++ 继承多态关系中的赋值运算符的重载=operator()