C ++ 11標準(ISO / IEC 14882:2011)在§ C.1.1:char* p = "abc"; // valid in C, invalid in C++對于C ++,因為指向字符串文字的指針是有害的,因為任何對其進行修改的嘗試都將導致崩潰,這是有害的。但是為什么在C語言中有效呢?C ++ 11還說:char* p = (char*)"abc"; // OK: cast added這意味著,如果將強制類型轉換添加到第一條語句中,它將變為有效。為什么強制轉換使第二條語句在C ++中有效,它與第一條語句有何不同?還是有害嗎?如果是這樣,為什么該標準說沒問題?
3 回答

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
非常危險的是它沒有提供任何有意義的靈活性,至少對于(完全)關心可移植性的代碼而言。寫入字符串文字通常會使您的程序在現代OS上中止,因此允許代碼在此處嘗試寫入不會增加任何有意義的靈活性
- 3 回答
- 0 關注
- 910 瀏覽
添加回答
舉報
0/150
提交
取消