Effective C++——条款53(第9章)

第9章   杂项讨论

Miscellany

    本章只有3个条款.第一个条款强调不可轻易忽视编译器警告信息.第二个条款综览C++标准程序库,其中覆盖由TR1引进的重大新机能.最后一个条款综览Boost,这是一个很重要的C++泛用型网站.

条款53: 不要轻易忽视编译器的警告

Pay attention to compiler warnings.

    许多程序员习惯性忽略编译器警告,认为如果问题严重,编译器应该给一个错误信息而非警告信息.这种想法对其他语言或许相对无害,但在C++,可能情况不同.举个例子,下面是一个经常发生的错误:
class B {
public:
    virtual void f() const;
};
class D : public B {
public:
    virtual void f();
};
    这里希望以D::f重新定义 virtual 函数B::f,但其中有个错误:B中的f是个 const 成员函数,而在D中它未被声明为 const .编译器可能会提示:
warning: D::f() hides virtual B::f()
    经验不足的程序员对这个信息的反应是:"D::f遮掩了B::f".错,这个 编译器试图告诉声明于B中的f并未在D中被重新声明,而是被整个遮掩了( 条款33描述为什么会这样).如果忽略这个编译器警告,几乎肯定会导致错误的程序行为.
    一旦从某个特定编译器的警告信息中获取经验,将学会了解不同的信息意味什么,那往往和它们"看起来"的意义十分不同.对警告信息深刻理解后,就可以选择忽略某些警告信息.
    注意:
    严肃对待编译器发出的警告信息.努力在编译器的最高警告级别下争取"无任何警告"的荣誉.
    不要过度依赖编译器的报警能力,因为不同的编译器对待事物的态度并不相同.一旦移植到另一个编译器上,原本依赖的警告信息有可能消失.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值