++i和i++的区别

它们两个的数值变化的区别,我这里就很少说了函数

这里主要说明二者在效率上的区别优化

(1)首先若是是自带的数据类型,好比int型,++i和i++,编译器的实现方式是相同的,二者并无效率上的区别,虽然也有副本的开销,可是通常编译器会优化。对象

(2)若是是自定义的数据类型,好比本身定义的类。这个时候二者就有了区别编译器

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

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

相关文章
相关标签/搜索