6.条款之不要忽略编译器的警告
我们有时候习惯性地忽略编译器的警告。通常认为问题很严重的话,编译器给我们一个错误而不是警告。这种想法对其他语言可能没有害,但是对C++却是很严重的问题。举个例子:
#include <iostream>
using namespace std;
class B{
public:
virtual void f() const;
};
class D:public B{
public:
virtual void f();
};
int main()
{
return 0;
}
实现这样的效果,这里希望D::f重新定义virtul函数B::f,但是其中有个错误:B中的f是一个const函数,而在D中它没有被声明。
其中有的编译器就会发出警告。
注意:我们要严肃对待编译器发出的警告,尽量让我们的编译器0 error(s), 0 warning(s),而且不能过度依赖编译器的警告信息,比如在其他编译器,它的警告信息就会消除掉
例如
上面就会出现无警告信息,因为不同的编译器对待事情的态度比不相同
参考文献《Effective C++》作者 Scott Meyers 翻译 候捷