平时++/--这两个单目运算符基本都会用在for循环,之前理解他们的区别只是:
1、++i:先++,再循环
2、i++:先循环,再++
其实,这种说话是有道理的,但是很模糊,直到学到<单目运算符重载为成员函数>的时候,我才真正的搞明白,不禁感叹:C++机制 !!!
举个完整的例子 :《将前置++和后置++重载为时钟类的成员函数》
.hpp文件:
```
#ifndef ________hpp
```
.cpp文件
```
#include
```
main.cpp
```
#include
```
运行结果:
```
23
```
其实,大家已经在.cpp文件中发现了,前置++/后置++返回的东西是不一样的:
前置++返回的是引用类型,是将++后的地址返回了,当然就是用+完之后的结果进行循环或者显示了;也可以理解成&的加入,实现了参数的双向传递;
后置++返回的是副本,是用+1前的结果进行循环或者显示,但此时内存地址上的变量已经暗自+1,只是返回的是之前的副本而已;同样可以理解成是参数的单向传递。
因为前置++/后置++的重载函数名字都是operator ++,所为为了区分,
前置++的重载函数没有形参;
后置++的重载函数有形参(int);
仅仅是为了区分,函数体的实现是不应该使用这个参数的。
其实,这里说的,和我之前的《拷贝构造函数的歪解》是很类似的,道理相通。希望大家好好看一下:
https://blog.csdn.net/weixin_45826012/article/details/102865017blog.csdn.net本人技术水平有限,若有错误或不当之处,可以在本号内反馈给我,一起交流一起学习!