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