天天看點

C++常量轉換

先看如下代碼

const int * p = NULL;
           

常量轉換,第一層含義是,将常量轉化為非常量,如下代碼,可将p轉化為非常量指針。

int * newp = const_cast<int *>(p);
           

newp中儲存的位址和p中儲存的位址完全一樣,唯一差別是,newp不再是一個常量指針了。

常量轉換,第二層含義是,将非常量轉化為常量,具體代碼如下

int * p2 = NULL;
const int * newP2 = const_cast<const int *>(p2);
           

唯一需要注意的是,常量轉化,隻能發生在指針和引用之間,不能對基本資料類型進行常量轉換,如下代碼是錯誤的

const int a = 10;
int b = const_cast<int>(a);
           

如下例子是引用變量變為常量引用變量的轉換

   //引用
    int num = 10;
    int &numRef = num;

    const int &numRef2 = static_cast<const int &>(numRef);
           
C++常量轉換
c++

繼續閱讀