一般情況下,非頂層const物件是允許被非const物件賦值**換)的,但是今天發現乙個特例,作為乙個mark
int main()
{ int a = 2;
int * pa = &a;
int ** ppa = &pa;
/* const int ** cppa = &pa;*/
const int * cpa = &a;
const int * cpa1 = pa;
const int **cppa = &cpa;
}
環境:vs2017
即不允許轉換,但是允許對cpa取值賦給cppa,具體什麼原因不清楚,作為乙個特例記錄一下。
因為一般來說頂層const的轉換都是沒問題的,底層const我就只知道這樣乙個例外。
const與非const型物件
一 非const物件可以初始化const物件 int i 0 const int ci i 因為它們使用各自的儲存單元。二 非const引用與const引用 1 const引用可以用常量 表示式 const物件或非const物件初始化 int i 0 const int refi i 儘管i與ref...
const引用與非const引用
const引用可讀不可改,與繫結物件是否為const無關,注意區分const引用與對const物件的引用 非const引用可讀可改,只可與非const物件繫結 const int ival 1024 const int refval ival ok both reference and object...
const 和 非const函式過載
在下面的 中a1呼叫const版本,a2呼叫非const版本。const a a1 a a2 a1.x a2.x 後面加const表示在該函式中不能對類的資料成員進行改變,比如 class a 這可以 int x const 當然有特殊情況,就是用mutable關鍵字修飾過的成員變數可以在宣告為co...