最后这三个条款属于杂项。条款53告诉我们不要忽略警告,虽然程序可以编译通过,但是要搞明白警告信息。条款54和条款55讲解C++的库,一个是TR1文档,一个是Boost。现在C++11标准已定,且有编译器支持。Boost库一些内容已经标准化到C++11,与其学习Boost,不如熟悉C++11中的Boost库内容。
许多程序员习惯性的忽略编译器的警告。或许它们认为,如果问题很严重,那么编译器应该给一个错误而不是警告。这种想法在C++非常有害,以一个例子来说明:
class B{
public:
virtual void f() const;
};
class D: public B{
public:
virtual void f();
};
这里希望D::f重新定义virtual函数B::F,但是D中却没有声明为const。编译器不会报错,可能会给如下警告
warning: D::f() hides virtual B::f()
你或许会想,D::f()遮掩了B::F,这正是我们想做的事。但是编译器在试图告诉你B::f并没有在D中重新声明,而是被遮掩了。如果忽略这个警告,比如导致错误行为。
从编译器的警告中获得经验,学会了解警告信息和它们看起来的意义并不十分相同。在最高警告级别下没有任何警告的程序是最理想的,但是对警告欧了深刻理解,可以选择忽略某些警告信息。但是一定记住在忽略这个警告之前,一定要了解它的真实意图。
警告信息和编译器相关,不同的编译器有不同的警告标准。例如上面代码中的函数遮掩在另一个编译器编译,可能没有任何警告。
总结
本书中的C++规范是在1998年制定的。现在C++11,即C++0x已经制定,且C++14在讨论中。本条款讨论内容是关于Boost库的,当时没有制定新标准,一些语言上的新特性以技术报告内容程序给大家,TR1代表Technical Report 1。
现在来看一下C++98加如的标准程序库有哪些:
TR1详细叙述了14个新组件(components,即程序机能单位),放在命名空间std::tr1内。下面展示一下TR1组件实例:
把TR1组件划分为2组,第一组提供彼此互不相干的机能:
第二组TR1组件由更精巧的template编程技术构成
总结
Boost库是一个高质量、源码开发、平台独立、编译器独立的程序库。Boost是一个C++开发者集结的社群,其网址为http://boost.org。
Boost有着其他C++组织没有的影响里。1、Boost有C++标准委员会创建,其目标为:作为一个可被加入标准C++之各种功能的测试场。2、它接纳程序的过程,以公开进行的同僚(public peer review)为基础。
下面介绍Boost程序库的类目
总结
原文地址:http://blog.csdn.net/kangroger/article/details/44684435