-2
看此程序:更改常量變量的指針C++
int main(){
const int a_const=10;
int * const a=const_cast<int * const>(&a_const);
*a=5;
}
所以的a_const
地址和指針a
具有相同的值。 但改變a
指向的值,不是a_const
。
看此程序:更改常量變量的指針C++
int main(){
const int a_const=10;
int * const a=const_cast<int * const>(&a_const);
*a=5;
}
所以的a_const
地址和指針a
具有相同的值。 但改變a
指向的值,不是a_const
。
程序的行爲是undefined。它出現可能是未定義行爲的表現。
通過使用作爲const_cast
的結果獲得的非const
指針(或引用),您不得試圖更改聲明爲const
的變量的值。
(如果它出現在這種情況下工作,嘗試用只讀字符串字面的等價物 - 這將導致很多平臺的崩潰)
雞蛋裏挑骨頭:如果行爲是*不確定*,你可以不說*它不可能*。根據定義,未定義的行爲不能排除任何行爲;) –
@ el.pescado:是的,精度很重要。我修改了。 – Bathsheba