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中重新声明,而是被遮掩了。如果忽略这个警告,几乎肯定会导致错误的程序行为,然后是许多调试行为,只为了找出编译器其实早就侦测出来并告诉你的事情
努力在你的编译器的最高警告级别下争取“无任何警告”的荣誉。
不同编译器的警告标准不同,所以,不能草率编程然后依赖编译器为你指出错误。
在你打发某个警告之前,确定你了解它意图说出的精确意义。这很重要。