++i和i++的区别

Posted mini-coconut

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了++i和i++的区别相关的知识,希望对你有一定的参考价值。

它们两个的数值变化的区别,我这里就不多说了

这里主要说明两者在效率上的区别

(1)首先如果是自带的数据类型,比如int型,++i和i++,编译器的实现方式是相同的,两者并没有效率上的区别,虽然也有副本的开销,但是一般编译器会优化。

(2)如果是自定义的数据类型,比如自己定义的类。这个时候两者就有了区别

++i,可以返回对象的引用,而i++必须产生一个临时对象保存更改前对象的值并返回(实现过自定义类型++运算符定义的就知道),所以导致在大对象的时候产生了较大的复制开销,引起效率降低,因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能的使用前缀式地增/递减

A& A::operator++();//++A
const A A::operator++(int);//A++,返回对象,调用拷贝构造函数
所以++A效率更高些。



以上是关于++i和i++的区别的主要内容,如果未能解决你的问题,请参考以下文章

++i和i++的区别

Java NIO与IO的区别和比较

list和hashtable的区别

C语言中put()与puts()的区别?

值类型和引用类型的区别 I 数据结构中的堆和栈和内存中的堆和栈的区别

Linux中Buffer和Cache的区别