代碼:
const int i = 42;
// int i = 42;
const int *p = &i;
*const_cast<int*>(p) = 0; // 強制去除 const
std::cout << i << std::endl; // 輸出可能仍為 42
const 對象的直接寫入(如 i = 0;),直接報錯拒絕生成目標文件。const int i 與 int i 在數據段分配方式相同(均為 .long 42),無運行時標記**。const 對象不變,可能將其值直接內聯到使用處(常量傳播),導致通過 const_cast 修改內存後,讀取時仍用舊值。const 對象(如字面量池、只讀數據段)觸發 未定義行為**(UB)**,可能導致段錯誤或沉默錯誤。const,除非確需修改。const T& 或 const T* 表達只讀意圖。constexpr、static const 對象使用 const_cast 寫入。