C++中修改常量值的方法
阿新 • • 發佈:2019-02-13
1.無法對全域性常量,靜態常量重新賦值,會引發編譯錯誤或者執行時錯誤
2.對函式內的區域性常量可以重新賦值,但是並不會改變值,只是不會報錯,所以沒什麼卵用
3.可以對類中的成員常量進行重新賦值,主要的方法就是通過獲取原常量的底層常量指標,使用強制型別轉換,將常量指標改變成非常量指標,然後通過非常量指標進行賦值。例子如下
class AClass{ private: const int x; int *const array; public: AClass(int n):array(new int[n]),x(n){} void changeConst(int m){ *(int *)&x=m; *(const_cast<int *>(&x))=m; //*(static_cast<int *>(&x))=m;這個是不行的,因為static_cast無法修改底層const,上面兩個都行; if(array) delete [] array; *(int **)&array=new int[m]; } }