持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
1️⃣前言
今天的笔记内容是:
- 增量运算符的重载
2️⃣前增量和后增量的区别
首先我们来回顾一下递增运算符的特点:
++i自增
- 运行结果为:
++i属于前置增量
前增量的特点:
- 先对操作数进行增量修改,再返回该对象。
- 即前增量运算符操作时,参数和返回的是同一个对象。
i++自增
- 运行结果为:
i++属于后置增量
后增量的特点是:
- 在增量之前,先返回原有的对象。
- 所以,我们应该先创建一个临时对象,存放原有对象的值。
- 这使得我们修改原有对象时,不会丢失原先的值
- 后增量操作返回的是原有对象的值,而不是原有对象
- 因为原有对象已经被进行了增量操作
- 因此我们返回的是临时对象,其存放原有对象的值
有一个问题,我们重载增量运算符时,函数名与参数是一样的,那么如何区分前增还是后增呢?
C++规定:在重载增量运算符时,如果参数里有一个整数型参数,那代表是后增运算符。
3️⃣成员形式下重载的示例
首先写一个类:
看前置++运算符重载的成员函数:
注意点:
- 返回值是我们定义类的引用;
- 无参数
- 函数体中,先对数据成员进行增量操作;
- 最后返回对象的引用
main函数如下:
输出结果为:
看后置++运算符重载的成员函数:
注意点:
- 返回值是临时对象,即返回值;
- 参数是
int,无其他意义,只是作为一个占位符,用于和前置++运算符重载区分开,在函数体中并不需要用到;
main函数如下:
输出结果为:
4️⃣全局环境的重载的示例
通过全局函数对自增++运算符进行重载!
注意:在我们自定义的类中,如果数据成员是私有的话,就必须将全局函数设置为友元函数,才能实现自增运算符的重载。
如下所示
5️⃣写在最后
好了,今天的笔记就到这里,欢迎大家到评论区一起讨论!