C++编程规范之28:优先使用++和—的标准形式。优先调用前缀形式
来源:互联网 发布:178炉石传说数据库 编辑:程序博客网 时间:2024/05/15 15:06
摘要:
如果定义++c,也要定义c++:递增和递减操作符很麻烦,因为它们都有前缀和后缀形式,而两种形式语义又略有不同。定义operator ++和operator –时,应该模仿它们对应的内置操作符,如果不需要原值,应该优先调用前缀版本。
对于++和—而言,后缀形式返回的是原值,而前缀形式返回的是操作后的新值。应该用前缀形式实现后缀形式,标准形式是:
//前缀形式++T&T::operator++(){ //执行递增 return *this;}//前缀形式--T&T::operator--(){ //执行递减 return *this;}
//后缀形式++TT::operator(int){ T old(*this); ++*this; return old;}//后缀形式--TT::operator(int){ T old(*this); --*this; return old;}
因此,在调用代码时,要优先使用前缀形式,除非确实需要后缀形式返回的原值。前缀形式在语义上与后缀形式是等价的,输入工作量也相当,只是效率会略高一些,因为前缀形式少创建了一个对象。这不是不成熟的优化,这是在避免不成熟的劣化。
1 0
- C++编程规范之28:优先使用++和—的标准形式。优先调用前缀形式
- 总是优先使用++、--的前缀形式
- C++编程规范之27:使用算术操作符和赋值操作符的标准形式
- C++编程规范指46:如果提供专门的new,应该提供所有标准形式(普通、就地和不抛出)
- More Effective C++----(6)自增、自减操作符前缀形式和后缀形式的区别
- 优先队列,由于优先队列的树形结构是完全二叉树,所以可以使用数组的形式去存储,我的上一个博客是用二叉树的形式去存储优先队列的
- C++(标准库)栈和队列以及优先队列的使用
- android JNI 使用的两种形式 --自己实现c和调用第三方so库
- 优先使用前缀操作符
- 【C++】二分查找的递归形式和非递归形式
- C++之成对使用的new和delete时采取相同形式(16)---《Effective C++》
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)(转载)
- 函数调用规范__cdecl和__stdcall的区别一目了然(表格形式)
- Directx9 sdk中有用的例子-Demo说明
- java_遍历map类型的容器
- 逆向3
- VC6.0给控制台程序exe文件添加icon图标
- (笔记)两种判断奇数偶数的方法
- C++编程规范之28:优先使用++和—的标准形式。优先调用前缀形式
- 沟通-让对方愉快的达成目的
- 奋斗不止 自强不息:当职业生涯中遇到不公怎么办
- Java中的字节对齐方式
- c++ 中关于没有默认构造函数的成员类对象问题
- C#学习2
- C++编程规范之29:考虑重载,以避免隐式类型转换
- http协议上传实现
- 折半查找的时间复杂度log2(n)的推导