<C++学习笔记>:自增运算符的重载

199 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

1️⃣前言

今天的笔记内容是:

  • 增量运算符的重载

2️⃣前增量和后增量的区别

首先我们来回顾一下递增运算符的特点:

  • ++i 自增

image.png

  • 运行结果为:

image.png

++i属于前置增量

前增量的特点:

  • 先对操作数进行增量修改,再返回该对象。
  • 即前增量运算符操作时,参数和返回的是同一个对象。

  • i++ 自增

image.png

  • 运行结果为:

image.png

i++属于后置增量

后增量的特点是:

  • 在增量之前,先返回原有的对象。
  • 所以,我们应该先创建一个临时对象,存放原有对象的值
  • 这使得我们修改原有对象时,不会丢失原先的值
  • 后增量操作返回的是原有对象的值,而不是原有对象
  • 因为原有对象已经被进行了增量操作
  • 因此我们返回的是临时对象,其存放原有对象的值

有一个问题,我们重载增量运算符时,函数名与参数是一样的,那么如何区分前增还是后增呢?

C++规定:在重载增量运算符时,如果参数里有一个整数型参数,那代表是后增运算符。


3️⃣成员形式下重载的示例

首先写一个类:

image.png

前置++运算符重载的成员函数:

image.png

注意点:

  • 返回值是我们定义类的引用;
  • 无参数
  • 函数体中,先对数据成员进行增量操作;
  • 最后返回对象的引用

main函数如下:

image.png

输出结果为:

image.png


后置++运算符重载的成员函数:

image.png

注意点:

  • 返回值是临时对象,即返回值;
  • 参数是int,无其他意义,只是作为一个占位符,用于和前置++运算符重载区分开,在函数体中并不需要用到;

main函数如下:

image.png

输出结果为:

image.png


4️⃣全局环境的重载的示例

通过全局函数对自增++运算符进行重载!

image.png

注意:在我们自定义的类中,如果数据成员是私有的话,就必须将全局函数设置为友元函数,才能实现自增运算符的重载。

如下所示

image.png

5️⃣写在最后

好了,今天的笔记就到这里,欢迎大家到评论区一起讨论!