c++中加号运算符重载
Posted 小柯南有话说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中加号运算符重载相关的知识,希望对你有一定的参考价值。
首先,在开始正文之前,看一个问题,想要实现两个自定义类对象相加,如何操作?
接到这个问题,刚开始,我是这样想的:
代码实现如下:
19行错误:没有与这些操作数匹配的“+”运算符。呃呃,很明显,编译器不让咱们这样操作。
可是,我们就是需要实现这样的加号功能,那该怎么做呢?
我们可以想到使用C++中的加号运算符重载方式实现。
在C++中,要实现加号运算符重载,有两个方法,第一种就是在类内部写成员函数实现,第二种全局函数实现,两个方法都有一个功能的函数名称operator+(), 这个函数名称是固定,不能写其他,不然编译器就不知道我们在实现加号运算符的重载。
第一种方法:成员函数实现加号运算符重载
类的成员函数实现operator+(),函数参数有至少一个参数,例如Add_custom_class_objects &p, 函数的返回值是Add_custom_class_objects类型,那么这个函数的代码就是下面的这种。
运行结果:
注意:
Add_custom_class_objects p3 = A1 + A2; // 等价于下面这行代码
Add_custom_class_objects p3 = A1.operator+(A2);
为了方便,我们可以再简化为:p3=A1+A2;
方法二:全局函数实现加号运算符重载
全局函数operator+(Add_custom_class_objects &p1, Add_custom_class_objects &p2) , 有两个参数,实现相加的逻辑是一样的。
最后,来看,加号运算符函数重载
回忆下,函数的重载概念,就是函数名相同,函数形式参数和个数和类型不同。编译器会根据调用的时候参数个数和类型,自动去调用函数,这就是函数重载。
写段代码理解:
可以看到,这里的p3 = p1 + 15, 第二个参数是int类型的15,而不是一个Add_custom_class_objects对象,所以这里发生重载的函数是:
好了,加号运算符重载,结束。
我是小柯南,我们下期见!
以上是关于c++中加号运算符重载的主要内容,如果未能解决你的问题,请参考以下文章