《C++ Primer Plus》第六版中文版第278頁第一到二行中的那句“drivel()和dabble()之所以在行為上有這種差別,主要是由于將非const值賦給const變數是合法的,但反之則是非法的。”(第八章第四節)
語境是,dabble(p1)無法匹配到其原型,其原型為:void dabble(char * bits);。而p1有定義為:const char p1[20] = "How's the weather?";。
提問,《C++ Primer Plus》中的這個說法是否錯誤。
uj5u.com熱心網友回復:
const char* p="123";char* p1=p;
p1[4]='5';//這樣合理嗎?
uj5u.com熱心網友回復:
按照函式原型的說法,書中說的是對的。但或許有些編譯器支持強制轉換,那就不那么絕對了(也就是反之則未必非法,但絕對是不安全的)比如
const char s1[] = “test”;
char* s2 = (char*)s1; //強制轉換
我覺得沒必要這么拘泥于這種東西,自己理解了就好了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/233697.html
標籤:C++ 語言
下一篇:大佬們可以幫幫我么
