C++语法——自增运算符"++"重载

发布时间 2023-11-27 00:34:12作者: vLiion

自增运算符"++"重载



C++ 是如何判断一个operator++函数是前缀自增运算符还是后缀自增运算符?

根据operator++(),()括号中的参数确定的。如果不填参数,就是前缀运算符;如果填入一个虚拟参数(如int),那就是后缀运算符。是前缀还是后缀和返回值类型是否是引用无关。



前缀自增运算符一定是返回原对象修改后的引用,而后缀自增运算符一定是返回拷贝对象吗?

不是强制要求,这是一种通用的约定——前缀自增运算符返回原对象修改后的引用,后缀自增运算符返回新的拷贝对象。



前缀自增运算符和后缀自增运算符在用法上有什么区别?

在约定的条件下:

前缀自增运算符 (++obj)
使用前缀自增运算符时,你会直接修改原始对象,并且可以在同一语句中使用递增后的值

例子:

MyNumber a(5);
MyNumber b = ++a; // 先递增a,然后将递增后的值赋给b

后缀自增运算符 (obj++)
使用后缀自增运算符时,你会在同一语句中使用原始值,然后再进行递增。

例子:

MyNumber a(5);
MyNumber b = a++; // 先保存a的原始值到b,然后再递增a


其它

通常,前缀递增运算符 (++obj)更常见,因为它更直观并且可以提供更好的性能。