1. 程式人生 > >C++中修改常量值的方法

C++中修改常量值的方法

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];
    }
}