1. 程式人生 > >面試題 3 之 const 全面總結

面試題 3 之 const 全面總結

說來慚愧,最近面試被問到const的問題,我居然有的地方說不太清楚。

回來後又仔細看了一下,現在作個總結,以免以後再犯同樣錯誤。

其實很是簡單,const 無非就是修飾變數不可以修改,這個就與它所處的位置有關了。

對於變數,有以下寫法:

const char const * const p = new char[10];


對於這個,簡單可以這麼記,在*號左邊修飾的*p,所以*p不可以改變,所以第一個const和第二個const是一樣的。

在*號右邊是修飾 p ,所以 p 不可以改變,p就是指標,就是指標不可以再指向其他位置。

對於函式,也有這樣的寫法:

const char fun(const char *p) const


對於第一個,修飾的是返回值,那就是返回值不可以改變,至於應用場景,我還不是特別瞭解,回頭再補上;

第二個,就是變數的寫法,修飾的是*p,指傳入指標的指向值不能被修改,用來保護傳入值,這裡一般用作指標或引用,因為也只有這兩種可以改變傳入值。

第三個,比較少見,其實沒有什麼作用,但是是個標示,表示這個函式不會改變成員變數的值,稱為常函式。

比如getXXX系列的函式,肯定不會修改成員函式的值,所以可以加上const,讓他人一目瞭然。

內容簡單又粗略,希望能對你我有用哦。