0
点赞
收藏
分享

微信扫一扫

c++: i++还是++i

洛茄 2022-12-04 阅读 46


刚开始学C语言时,increment的前缀形式++i有时叫做“增加然后取回”,后缀形式i++叫做“取回然后增加”。
但是for循环里我们看到有用i++,也有用++i,执行效率有什么区别吗?
来看下increment的定义

// 前缀形式:增加然后取回值
UPInt& UPInt::operator++()
{
 *this += 1; // 增加
 return *this; // 取回值
}

// postfix form: fetch and increment
const UPInt UPInt::operator++(int)
{
 UPInt oldValue = *this; // 取回值
 ++(*this); // 增加
 return oldValue; // 返回被取回的值
}

  • 后缀操作符函数没有使用它的参数,它的参数只是用来区分前缀与后缀函数调用。
  • 后缀操作要多生成一个局部对象oldValue,然后调用前缀操作,因此执行速度比前缀操作慢,对循环控制变量i,要养成写++i、不写i++的习惯
  • const 关键词修改后缀操作的返回值,是为了保持与int类型一致,避免出现i++++这种操作
  • 首先int不支持i++++;
  • 其次,第二次进行++时已经不是原始对象的值,而是第一次调用的返回值,这样会导致++对原始对象操作一次,对返回值操作一次,不符合我们的直觉。

​​operator++()和operator++(int)的区别​​​C++迭代器(STL迭代器)iterator详解​​


举报

相关推荐

0 条评论