它們兩個的數值變化的區別,我這裏就很少說了函數
這裏主要說明二者在效率上的區別優化
(1)首先若是是自帶的數據類型,好比int型,++i和i++,編譯器的實現方式是相同的,二者並無效率上的區別,雖然也有副本的開銷,可是通常編譯器會優化。對象
(2)若是是自定義的數據類型,好比本身定義的類。這個時候二者就有了區別編譯器
++i,能夠返回對象的引用,而i++必須產生一個臨時對象保存更改前對象的值並返回(實現過自定義類型++運算符定義的就知道),因此致使在大對象的時候產生了較大的複製開銷,引發效率下降,所以處理使用者自定義類型(注意不是指內建類型)的時候,應該儘量的使用前綴式地增/遞減編譯
A& A::operator++();//++A
const A A::operator++(int);//A++,返回對象,調用拷貝構造函數
因此++A效率更高些。效率