本文主要是介绍C++中前置操作符和后置操作符的重载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1 C++中前置操作符和后置操作符的重载
- 1.1 前置操作符和后置操作符的原生语义
- 1.2 ++操作符的重载
- 1.3 前置++和后置++的真正区别
1 C++中前置操作符和后置操作符的重载
1.1 前置操作符和后置操作符的原生语义
下面的代码有区别吗?为什么?
在实际测试中发现,如上两行代码对应的汇编语句一摸一样。
我们需要知道如下事实:
- 现代编译器产品会对代码进行优化。
- 优化使得最终的二进制程序更加高效。
- 优化后的二进制程序失去了C/C++的原生语义。
- 不可能从编译后的二进制程序还原C/C++程序。
- C/C++开发的软件无法完全反编译。
1.2 ++操作符的重载
++操作符可以被重载:
- 全局函数和成员函数均可进行重载,推荐使用成员函数。
- 重载前置++操作符不需要额外的参数。
- 重载后置++操作符需要一个int类型的占位参数。
++操作符的重载:
#include <iostream>
#include <string>using namespace std;class Test
{int mValue;
public:Test(int i){mValue = i;}int value(){return mValue;}Test& operator ++ (){++mValue;return *this;}Test operator ++ (int){Test ret(mValue);mValue++;return ret;}
};int main()
{Test t(0);t++;++t;return 0;
}
1.3 前置++和后置++的真正区别
对于基础类型的变量:
- 前置++的效率与后置++的效率基本相同。
- 根据项目组编码规范进行选择。
对于类类型的对象:
- 前置++的效率高于后置++。
- 尽量使用前置++操作符提高程序效率。
参考资料:
- C++深度解析教程
这篇关于C++中前置操作符和后置操作符的重载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!