我們都知道const是為了防止程序對所定義的變量或者其他對象進行修改,被const修飾的那個變量也就變成常量,但是我們都知道可以用指針來修改。比如下面的代碼:
int main(){ const int a = 10; int *ptr2 = const_cast<int*>(&a); *ptr2 = 20; cout << a << endl;}這時如果輸出a,按道理應該為20,然而并不是這樣,程序輸出的a為10,如果我們分別輸出&a和ptr,我們會發現他們的地址一樣,并且輸出*ptr結果是20,說明a已經被修改。
原因如下: C++把const看做常量,編譯器會使用常數直接替換掉對a的引用,例如cout<
新聞熱點
疑難解答
圖片精選