我們都知道const是為了防止程序?qū)λx的變量或者其他對(duì)象進(jìn)行修改,被const修飾的那個(gè)變量也就變成常量,但是我們都知道可以用指針來修改。比如下面的代碼:
int main(){ const int a = 10; int *ptr2 = const_cast<int*>(&a); *ptr2 = 20; cout << a << endl;}這時(shí)如果輸出a,按道理應(yīng)該為20,然而并不是這樣,程序輸出的a為10,如果我們分別輸出&a和ptr,我們會(huì)發(fā)現(xiàn)他們的地址一樣,并且輸出*ptr結(jié)果是20,說明a已經(jīng)被修改。
原因如下: C++把const看做常量,編譯器會(huì)使用常數(shù)直接替換掉對(duì)a的引用,例如cout<
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注