C++ 頂層const底層const

double64發表於2024-09-14
int i =0;
int *const pl = &i;    //不能改變p1的值,這是一個頂層 const
const int ci=42;       //不能改變 ci的值,這是一個頂層 const
const int *p2 =&ci;    //允許改變p2的值,這是一個底層 const
const int *const p3=p2;//靠右的const是頂層const,靠左的是底層 const
const int &r=ci;       //用於宣告引用的 const 都是底層 const
i = ci;  //正確:複製ci的值,ci是一個頂層const,對此操作無影響
p2 = p3; //正確:p2和p3指向的物件型別相同,p3頂層const的部分不影響
int *p=p3;        //錯誤:p3 包含底層 const的定義,而p沒有
p2 = p3;          //正確:p2和p3 都是底層 const
p2 = &i;          //正確:int*能轉換成 const int*
int &r=ci;        //錯誤:普通的int&不能繫結到int常量上
const int &r2 =i; //正確:const int&可以繫結到一個普通int上




《C++ Primer》 P58

相關文章