先看如下代碼
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);
