1. 程式人生 > >《c++ primer》第二章 const限定符

《c++ primer》第二章 const限定符

1.const物件的初始化:有時我們希望定義這樣一種變數,它的值不能夠被改變。此時我們可以用const限定符。由於const物件一旦建立之後值不能夠再改變,因此const物件必須初始化。如果用一個物件去初始化另一個物件,那麼它們是不是const都無所謂。

2.預設狀態下,const物件僅在檔案內有效。但如果希望別的檔案都能夠引用該const物件,那麼對於const變數不管宣告還是定義都新增extern關鍵字。

3.const的引用。把引用繫結到const物件上,就像繫結到其他物件上一樣,我們稱之為對常量的引用。對const的引用可能引用一個非cosnt的物件。

int i=42;
int &r1=i;
const int &r2=i;
r1=0;
r2=0;//錯誤,但是將r2繫結到i是合法行為。只是由於r2是const型別的引用,因此不能通過r2改變i的值。

4.指標和const

(1)指向常量的指標不能夠用於改變其物件的值。(const double * ptr)//指的是常量

想要存放常量的地址,只能使用指向常量的指標。 (也就是說指向const double的型別的指標必須是const double型別)

指向常量的指標沒有規定所指的物件必須是一個常量。(也就是說const double型別的指標不一定指向 const double型別的常量)

const double* ptr指向的是不是const 型別的都可以。但是 const double型別的常量必須用cosnt double* 的指標。

(2)常量指標 必須初始化,初始化完成,它的值就不能再改變了。把 *放在const前,說明指標是一個常量。(double *const ptr)

const指標不能賦值給普通指標。

5.頂層const

用名詞頂層const表示指標本身是個常量;用名詞底層const表示指標所指的物件是個常量。

執行拷貝操作時,頂層const不受什麼影響。

另一方面,底層const的限制不能忽視。拷入與拷出物件必須具有相同的底層const資格。