const_cast

const_cast

const_cast是一個基於C語言編程開發的運算方法,其主要作用是:修改類型的const或volatile屬性。使用該運算方法可以返回一個指向非常量的指針(或引用)指向b1,就可以通過該指針(或引用)對它的數據成員任意改變。

基本介紹

  • 外文名:const_cast
  • 作用:修改類型的const或volatile屬性
  • 用法:const_cast<type_id> 
  • 領域:程式設計
用法,案例,

用法

:const_cast<type_id> (expression)
該運算符用來修改類型的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的類型是一樣的。
一、常量指針被轉化成非常量的指針,並且仍然指向原來的對象;
二、常量引用被轉換成非常量的引用,並且仍然指向原來的對象;
三、const_cast一般用於修改底指針。如const char *p形式。

案例

volatile和const類似。舉如下一例:
class B{public:    B() { }public:    int m_iNum;};void foo(){    const B b1;    //b1.m_iNum = 100; //compile error    // 可以做如下轉換,體現出轉換為指針類型    B *b2 = const_cast<B*>(&b1);    // 或者左側也可以用引用類型,如果對b2或b3的數據成員做改變,就是對b1的值在做改變    B &b3 = const_cast<B&>(b1);    b2->m_iNum = 200;    //fine    b3.m_iNum = 300;    //fine}int main( int argc, char * argv[] ){    foo();    return 0;}
上面代碼可運行,不會報錯,錯誤代碼已經注釋 。去掉下面代碼行的注釋號後會報錯,因為b1之不可修改。
//b1.m_iNum = 100; //compile error   

相關詞條

熱門詞條

聯絡我們