++i和i++的區別

它們兩個的數值變化的區別,我這裏就很少說了函數

這裏主要說明二者在效率上的區別優化

(1)首先若是是自帶的數據類型,好比int型,++i和i++,編譯器的實現方式是相同的,二者並無效率上的區別,雖然也有副本的開銷,可是通常編譯器會優化。對象

(2)若是是自定義的數據類型,好比本身定義的類。這個時候二者就有了區別編譯器

++i,能夠返回對象的引用,而i++必須產生一個臨時對象保存更改前對象的值並返回(實現過自定義類型++運算符定義的就知道),因此致使在大對象的時候產生了較大的複製開銷,引發效率下降,所以處理使用者自定義類型(注意不是指內建類型)的時候,應該儘量的使用前綴式地增/遞減編譯

A& A::operator++();//++A
const A A::operator++(int);//A++,返回對象,調用拷貝構造函數
因此++A效率更高些。效率

相關文章
相關標籤/搜索