const int ci = 90;
const int* pi = &ci;
int *pi2 = const_cast<int*>(pi);
*pi2 = 120; //未定義行為
cout << ci << endl; //print 90
cout << *pi << endl; //print 120
cout << *pi2 << endl; //print 120
Q:
查記憶體可以看到ci對應的地址內的值被改動成了120,ci、pi、pi2是的確是同地址
列印ci得到90,是編譯器優化替換得到的嗎?
被替換為了:cout << 90 << endl;?
uj5u.com熱心網友回復:
是的,編譯階段的行為轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35884.html
標籤:C++ 語言
