C 非const轉換為const 特例

2021-09-07 03:07:02 字數 420 閱讀 4493

一般情況下,非頂層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...