一、为什么要进行运算符重载?
在C++中,运算符重载是重载多态的一种,重载多态是多态的一种。所以说,运算符重载只是多态这个概念中的一小部分。
在C++中,基本数据类型存在预定义的运算符,这些运算符和操作数结合形成表达式。表达式的执行方式是确定的,并不需要编写函数来控制执行方式。
实际上,对于自定义的类型,有时也需要进行类似“运算符”的计算。这时,如果不想使用函数调用的形式,就可以重载运算符。
二、什么是运算符重载?
对于C++中已有的运算符,可以通过重载,使得统一运算符作用在不同类型上,产生不同的行为。简单的说,同一运算符含有几个重载的函数,就能产生几种不同的行为。
运算符重载的执行过程为:将运算表达式转换为重载的函数调用,将表达式中的对象转换为重载的函数的实参,选择哪个重载的函数由对象类型来确定。
三、重载规则
运算符重载有下面几条非常重要的规则:
- 只能重载C++中已有的运算符;
- 不能重载:类属关系“.”、成员指针“.*”、作用域分辨“::”、三目“?:”这四个运算符;
- 重载不改变运算符的优先级和结合性;
- 重载的运算符至少有一个操作对象为自定义类型;
四、重载语法
C++中规定了两种重载方式,一种是类的非静态成员函数,另一种是非类的成员函数。两种方式的语法是相同的,都采用operator作为关键字,如下:
返回类型