首页 > 其他 > 详细

i++和++i的区别--后缀运算符效率研究

时间:2014-11-19 07:29:22      阅读:123      评论:0      收藏:0      [点我收藏+]

i++和++i的区别


如果使用内置的类型的话是没有太大区别的,内置类型比如说int 等。


如果使用的是class构造的对象,那么区别还是挺大的。


我们要先理解他们各自的工作方式。


++i我们成为前缀运算符,它是先自增,然后返回值

i++称为后缀运算符,它是先建立一个副本,自己递增,最后返回副本。


下面来解释一下为什么i++为何效率会这么低。

我们对++后缀运算符重载,我们就能发现其中的问题


class Time
{
public:
	Time operator++(int);
	Time operator++();
private:
	int sec;
};

Time Time::operator++()
{
	sec++;
	return (*this);
}

Time Time::operator++(int)
{
	Time temp(*this);
	sec++;
	return temp;
}

可以看到在C++中前缀重载不需要建立新的对象,但是后缀就不一样了,后缀需要返回的原来的值,那么就不得不保存一个副本用来返回,这是导致i++效率低下的根本原因


i++和++i的区别--后缀运算符效率研究

原文:http://blog.csdn.net/u013011841/article/details/41270191

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!