i++和++i的效率比较

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ziyuzhao123/article/details/39136993

在读源码的时候经常遇到自增操作,一般都采用++i,我想这个可定是有原因的。这就涉及到它们的效率问题。

关于i++和++i的效率比较,一个简洁的回答:

在内建数据类型的情况下,效率没有区别。

在自定义数据类型的情况下,++i的效率较高。

分析:

自定义数据类型的情况下:

++i返回对象的引用;

i++总是要创建一个临时对象,在退出函数时还要销毁它,而且返回临时对象的值时还会调用其拷贝构造函数。

如果对于C++里的类,那++i和i++两个是运算符重载,i++在实现的时候,产生了一个local  object,退出时还要销毁它。
  class   INT;   
  //++i   的版本   
  INT   INT::operator++()   
  {   
          *this=*this+1;   
          return   *this;   
  }   
  //i++   的版本   
  const   INT   INT::operator   ++(int)   
  {   
            INT   oldvalue=*this;   
            *this=*this+1;   
            return   oldvalue   
  }   
所以从效率上来说++i比i++来的更有效率。


猜你喜欢

转载自blog.csdn.net/ziyuzhao123/article/details/39136993
今日推荐