C++编程规范之28:优先使用++和—的标准形式。优先调用前缀形式

简介:

摘要:

    如果定义++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月前
|
自然语言处理 算法 Java
C/C++ 程序员编程规范之注释
C/C++ 程序员编程规范之注释
60 1
|
1天前
|
编译器 C++
C++的前缀++与后缀++是什么
C++的前缀++与后缀++是什么
|
1月前
|
存储 算法 测试技术
|
1月前
|
程序员 编译器 C++
|
1月前
|
程序员 开发工具 C++
C/C++ 程序员编程规范之排版
C/C++ 程序员编程规范之排版
43 1
|
1月前
|
C++
最长公共前缀(C++)
最长公共前缀(C++)
17 0
|
6月前
|
人工智能 算法 BI
C++深度优先(DFS)算法的应用:收集所有金币可获得的最大积分
C++深度优先(DFS)算法的应用:收集所有金币可获得的最大积分
|
7月前
|
存储 人工智能 算法
C++基础算法前缀和和差分篇
C++基础算法前缀和和差分篇
|
8月前
|
机器学习/深度学习 算法 测试技术
C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例
C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例
|
11月前
|
存储 设计模式 算法
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
03-📝C++核心语法|面向对象1【 C++编程规范、类和对象、面向对象程序设计案例、对象的构造和析构、C++面向对象模型初探】