頂層const & 底層const
個人理解:頂層cosnt 就是不影響變數型別,作為修飾符的存在。底層則會影響到變數型別
例如:
int *pi; //p1 的就是乙個頂層const ,p2的則是底層const。這是乙個int *型別的變數,乙個指向int型的指標。
int *const p1; //
這還是乙個int *型別的變數(首先p1是乙個指標型別,指向的是int型別的值。才不管你這個變數是不是有const修飾符)
intconst *p2; //
這是乙個int const * 型別的變數(p2是乙個指標型別,指向的是int const 型別的值)
在g++ 下得到了驗證
像 int const i; const doulbe j;等等不涉及到指標的都是頂層const
c++ 裡面的過載函式如果像以下 這樣宣告兩個同名函式是會報錯的:
int fun(type name);
int fun(type const name);
int fun2(type * name);
int fun2(type *const name);
因為實際上是一種型別的形參,而過載函式要兩個函式的形參相異。
頂層const 底層const
頂層const top level const 表示指標 或引用等 本身是個常量。底層const low level const 表示指標指的物件是乙個常量。一般當說到頂層或底層const的時候都是指標或者引用型別的,因為普通型別的const只能是底層的。例如 const int i 0 i 表示是...
頂層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
是否可修改所指向的物件 是否可通過指標修改物件的值 頂層const 指標本身是常量。否 是 底層const 指標所指的物件是常量。是 否 int a 0 const int b 1 const int p1 a 底層const p1指向a int const p1與const int p1等效 p1...