目录大家好,我是翼同学!
- 1️⃣前言
- 2️⃣如何理解运算符重载?
- 3️⃣如何重载运算符?
- 关键字
- 重载的格式
- 需注意的点
- 4️⃣无法重载的运算符
- 5️⃣写在最后
1️⃣前言
又到了端午节,先祝大家端午安康!!!
今天笔记的内容是:
- 总结运算符的重载
运算符的重载,使得程序更加容易理解,便于我们对类的对象进行操作。
2️⃣如何理解运算符重载?
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
- 运算符重载是一种形式上的C++多态
- 事实上很多C++运算符都实现了重载,比如运算符*
- 当*运算符用于地址,将得到存储在该地址中的值
- 当*运算符用于两个数字时,将得到它们的乘积
- 同样的,当我们定义一个类后,创建两个类的对象
- 接着将两个对象相乘,显然编译器并不知道该如何操作
- 只有将*号运算符重载后才能实现两个对象的相乘,这就是运算符重载
运算符重载是C++的特性之一,它使得我们能够将运算符的定义扩展到自定义的数据类型中。
运算符重载使得C++的代码更加直观且易读,简洁易懂。
3️⃣如何重载运算符? 关键字
- operator
重载的格式
运算符重载的格式为:
举个例子:
我们定义一个myClass类,然后对加号运算符进行重载:
- 优先性与结合性不能变!
因为运算符是C++内部定义好了的,具有一定语法规则,如运算时的优先性以及结合性等。
在重载运算符时,需注意其运算顺序和优先性等不能改变!
- 操作数的个数不能变!
运算符根据操作数的不同,可分为单目运算符和双目运算符等。
在重载运算符时,必须注意,不能改变操作数的个数。
比如乘法运算符*的操作数是两个,即A*B,这是我们在重载时就不能修改*的操作数个数。
不然会导致程序报错,编译错误!
- 不能凭空创造运算符!
不能创建新的运算符,不然会导致编译出错。
例如,下面的操作是错误的:
4️⃣无法重载的运算符
几乎所有的C++运算符都可以被重载。但是,C++规定有些运算符无法进行重载!
如下所示:
- 点操作符(.)
- 域操作符(::)
- 成员间访问操作符(.,*)
- 成员指针操作符(->,*)
- 条件操作符(? ::)
最后,附上我之前写过的文章(小例子):
- <加号运算符重载>
- <左移运算符重载>
- <自增运算符重载>
- <赋值运算符重载>
5️⃣写在最后
好了,本篇笔记就到写这。最后祝大家幸福吉祥,端午安康!
注:本章内容参考书
《C++程序设计教程》---- 钱能 著



