Item 53 注意編譯警告

2021-07-10 02:01:38 字數 862 閱讀 1782

item 53: pay attention to compiler warnings.

編譯警告在c++中很重要,因為它可能是個錯誤啊! 不要隨便忽略那些警告,因為編譯器的作者比你更清楚那些**在幹什麼。 所以,

其實在多數專案實踐中,不僅要消除所有編譯警告,消除所有**風格檢查警告也是常見慣例。

還是看乙個常見的錯誤吧,編譯器會幫你發現它。比如我們想在d中重寫b中的虛函式f()

classb;

classd:

public

b;

我們忘記寫const了!這已經不是重寫虛函式了,而是定義同名函式而徹底隱藏父類中的void f() const。 所以編譯器會給警告;

warning: d::f() hides virtual b::f()

編譯器的意思是b中沒有宣告過這樣乙個f。但很多無知的程式設計師會想:當然d::f隱藏了b::f,這就是我要的結果啊! 卻沒有想到是自己忘寫了const。這裡犯的錯誤可能會導致長時間的debug,就因為你忽略了編譯器早就發現的乙個問題。

當你有很多經驗時便能識別那些warning到底在說什麼,但最好的習慣還是消除多有warning。因為當warning井噴時很容易忽略其中的嚴重問題。 至少當你忽略乙個warning時,要確保你已經完全理解了它在說什麼。

oc53 autorelease注意事項

autorelease注意事項 import import person.h int main int argc,const char ar 1.一定要在自動釋放池中呼叫autorelease,才會將物件放入自動釋放池中 person p4 person alloc init autorelease...

php5 3 注意事項說明

php5.3 新特性1.支援命名空間 namespace 5.3以前 複製 如下 class zend db table select 5.3複製 如下 namespace zend db table class select 2.支援延遲靜態繫結 5.3以前 class 獲得類名 self who...

php5 3使用手冊,php5 3 注意事項說明

php5.3 新特性1.支援命名空間 namespace 5.3以前 class zend db table select 表示當前這個類檔案位於zend db table下 5.3namespace zend db table class select 2.支援延遲靜態繫結5.3以前 class ...