首页 > 代码库 > i++和++i的区别--后缀运算符效率研究
i++和++i的区别--后缀运算符效率研究
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的区别--后缀运算符效率研究
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。