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 ...