這個其實和我另一篇博客內容差不多,就是常量指標,指向常量的指標變數類似,
頂層const:
表示指標本身就是一個常量
底層const:
表示指標所指的物件是一個常量
這個東西其實也沒什么難度了,下面參考點書本上的原話:
頂層const可以表示任意的物件是常量,這一點對任何資料型別都適用,如算術型別,類,指標等底層const則與指標和參考等復合型別的基本型別部分有關,
比較特殊的是,指標型別既可以是頂層const也可以是底層const,
上面的話為什么頂層都適用呢?
就是因為頂層const直接就寫死了,
如:const int a=1;a都被寫死了,還想怎么變,所以都適用,
但是底層const沒有改變,所以不同情況下要不同對待,
頂層const和底層const指標對比:
int i = 0;
int *const p1 = &i; 頂層,p1值不能改變
const int ci = 42; 頂層,ci值不能改變
const int *p2 = &ci; 底層,p2值能改變
const int *const p3 = p2; 既是底層又是頂層,p值不能改變
const int &r = ci; 用于宣告參考的const都是底層const
拷貝操作:
常量是頂層const和底層const區別明顯,
int a = 10;
const int * aa = &a;
int * const aaa = &a;
aa = aaa;頂層const可以賦值給底層,因為底層const的值可以改變
//aaa = aa; 反之則不行
當執行物件的拷貝操作時,拷入和拷出的物件必須具有相同的底層const資格,或者兩個物件的資料型別必須能夠轉換,非常量可以轉換為常量,反之則不行
//int *p = p3; p3是底層的,p不是
p2 = p3;都是底層const可以
p2 = &i; int *可以轉化為const int *
//int &r = ci; 普通的int &不能系結到常量上
const int &r2 = i; const int &可以系結到普通常量上
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/253119.html
標籤:其他
下一篇:Vue組件
