程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Item 53:注意編譯警告

Item 53:注意編譯警告

編輯:C++入門知識

Item 53:注意編譯警告


Item 53: Pay attention to compiler warnings.

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

  • 請嚴肅對待所有warning,要追求最高warning級別的warning-free代碼;
  • 但不要依賴於warning,可能換個編譯器有些warning就不在了。

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

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

    class B{
    public:
        virtual void f() const;
    };
    class D:public B{
    public:
        virtual void f();
    };
    

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

    warning: D::f() hides virtual B::f()
    

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

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved