「頂層const」和「底層const」的思考

2021-07-09 08:06:46 字數 836 閱讀 1255

「頂層const"顧名思義就是對物件本身的一種限制,而使得物件本身為常量。

例:

const int a = 1; //對物件本身做了限制,變為常量,是「頂層const」

同理,」底層const"通常與指標和引用等復合型別的基本型別有關,那是對指標、引用型別所牽連的物件的限制,那是對底層的限制。

例:

const int a = 1;

const int *p = &a; //對儲存的a物件進行了限制,這是「底層const」

歸根結底,限制的範圍不同,有復合型別既可以是「頂層const」也可以是」底層const",比如指標。

例:

const int a = 1;
const int *r1 = &a;
const int *const r2= &r1; //對r2和r1都作了限制,即是「頂層const」又是「底層const」
注:在使用「底層const"物件進行賦值時,要賦值物件必須同時具有「底層const"例:

const int a = 1;

const int *p = &a;

int *p1 = p; //p具有「底層const」將引發錯誤

因為p1是int型指標,必然可以對p1所儲存的物件作出改變,例

*p1 = 1;
然而,p1所儲存的物件為a,a是const常量,與之有矛盾。所以「底層const」只能賦值給「底層const"。

頂層const和底層const

頂層const 本身是乙個常量 底層const 所指的物件是乙個常量 int const p1 i const修飾p1,p1本身是乙個const,所以這個const是頂層const const int ci 42 const修飾ci,ci本身是乙個const,頂層 const int p2 ci c...

頂層const和底層const

1.頂層 const 與底層 const概念 指標本身是乙個物件,因為,指標實際對應著記憶體單元的一段儲存空間,然而,指標所指向的也是乙個資料物件,因此,指標是乙個常量與指標所指向的是乙個常量是兩個完全不同的概念,頂層 const表示的是指標本身是乙個常量,底層const 表示的是指標所指的物件是乙...

頂層const和底層const

今天讀到函式這章,發現又說到了頂層 高層 const和底層 低層 const,然而自己對他們還是一知半解,就重讀了有關這一部分的知識。感覺自己已經理解了,總結一下。首先這裡是書中的原話 用名詞頂層const表示指標本身是乙個常量 用名詞底層const表示指標所指的物件是乙個常量。我們知道const是...