effective C++ 条款 53:不要轻忽编译器的警告

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

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

这里希望重新定义virtual函数B::f,但有个错误,B中的f是个const成员函数,但D中未被声明const。有编译器就这样说:

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

这个编译器试图告诉你声明于B中的f并未在D中重新声明,而是被遮掩了。如果忽略这个警告,几乎肯定会导致错误的程序行为,然后是许多调试行为,只为了找出编译器其实早就侦测出来并告诉你的事情

努力在你的编译器的最高警告级别下争取“无任何警告”的荣誉。

不同编译器的警告标准不同,所以,不能草率编程然后依赖编译器为你指出错误。

在你打发某个警告之前,确定你了解它意图说出的精确意义。这很重要。

posted @ 2012-02-19 23:58  lidan  阅读(268)  评论(0编辑  收藏  举报