在新寫的採用C++11標準的編譯器裏,進行編譯以後,原來沒有任何提示的語句,竟然出現如下問題:
char *pName = "NULL";
warning: ISO C++11 does not allow conversion from string literal to 'char *'
我雖然知道這個是指針指向了不可修改的常量字符串,但在C++98 中,該種類型的語句首先是支持的,其次也不會出現類似的C++11之類的標誌。
查閱各種資料後發現,主要原因是:
在C++11裏,對類型加了更強對定義,即指針指向的內容如果不可修改,就建議把該指針確認爲const指針類型;如果不加const標誌符,就提示一個告警。
PS:C++11確實相比C++98,作了更多的語法和語義擴充,值得學習。
參考:
https://stackoverflow.com/questions/9650058/deprecated-conversion-from-string-literal-to-char