前置 和後置 的區別

2021-08-21 15:44:47 字數 695 閱讀 4597

++a表示取a的位址,增加它的內容,然後把值放在暫存器中;

a++表示取a的位址,把它的值裝入暫存器,然後增加記憶體中的a的值;

前置++和後置++,有4點不同:

返回型別不同

形參不同

**不同

效率不同

1、返回型別

前置++的返回型別是&,後置++的返回型別const值。這意味著,前置++返回的是左值(可以被修改,也就是說可以對它進行前置++、後置++、賦值等操作),後置++返回的是右值(不可以被修改,自然就不能對它進行前置++、後置++、賦值等操作)。

2、形參不同

前置++與後置++的操作符過載函式,函式原型必須不同。否則就違反了「過載函式必須擁有不同的函式原型」的語法規定。

雖然前置++與後置++的返回型別不同,但是返回型別不屬於函式原型。為了繞過語法限制,只好給後置++增加了乙個int形參。

3、**不同

前置++的實現比較簡單,自增之後,將*this返回即可。需要注意的是,一定要返回*this。

後置++的實現稍微麻煩一些。因為要返回自增之前的物件,所以先將物件拷貝乙份,再進行自增,最後返回那個拷貝。

4、效率不同

如果不需要返回自增之前的值,那麼前置++和後置++的計算效果都一樣。但是,我們仍然應該優先使用前置++,尤其是對於使用者自定義型別的自增操作。

前置++的效率更高,理由是:後置++會生成臨時物件。

前置 和後置 的區別

includeusing namespace std class int int const int operator int int operator private int m i ostream operator ostream os,const int i 可以使用 a而此時不能使用a 後置...

前置 和後置 的區別

前置 和後置 的計算效果均為運算元自加一。當單獨乙個語句的時候沒有區別,但如果用在表示式中 i 表示先取i的值做計算,再自加 i表示先自加,再取i的值做計算。比如 int i 2,j 如果j i 那麼先取i的值賦值給j,於是j值為2,i值再自加,i 3。如果 j i 那麼i先自加,得到i 3,然後再...

前置 和後置 過載

1 前置 過載時沒有引數 而後置 過載時有引數。不會使用其引數,僅僅是區分用。可以理解為前置 後面有引數了,所以不需要引數 i 對應 operator i 對應 operator int 2 前置 需要返回引用 因為過載自加運算子後可以返回物件的引用,以方便在表示式中連續使用。而後置 返回的不是引用...