这里有3个条款。第一个条款强调不可轻忽编译器警告信息。第二个条件总览C++
Standard,主要是TR1。最后条款总览Boost。很多机能都被在C++之后新特性中不断引入把。
条款53:不要轻忽编译器的警告
- 严肃对待编译器发出的警告信息。
- 不要过度依赖编译器的报警能力,不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,原本依赖的警告信息有可能消失。
条款54:让自己熟悉包括TR1在内的标准程序库
- C++98列入C++标准程序库有以下成分:
- STL(Standard Template Library,标准模板库)。覆盖容器(containers如vector,string,map)、迭代器(iterators)、算法(algorithms如find,sort,transform)、函数对象(function objects如less,greater)、各种容器适配器(container adapters如stack,priority_queue)和函数对象适配器(function object adapters如mem_fun,not1).
- Iostreams,覆盖用户自定缓冲功能、国际化I/O,以及预先定义好的对象cin,cout,cerr和clog。
- 国际化支持,多区域(multiple active locales)能力。像wchar_t(通常是16 bits/char)和wstring(由wchar_ts组成的stirngs)等类型促进Unicode。
- 数值处理,包括复数模板(complex)和纯数值数组(valaray)。
- 异常阶层体系(exception hierarchy),包括base class exception及其derived classes logic_error和runtime_error,以及更深继承的各个classes。
- C89标准程序库。
- C++11相对于C++98/03有哪些显著的增强呢?
- 通过内存模型、线程、原子操作等支持本地并行编程(Native Concurrency)
- 通过统一初始化表达式、auto、decltype、移动语义等来统一对泛型编程的支持
- 通过constexpr、POD等来更好地支持系统编程
- 通过内联命名空间、继承构造函数和右值引用等来更好地支持库的构建
- C++11 知识点
auto关键字、for-each循环、右值及移动构造函数 + std::forward + std::move + stl容器新增的emplace_back()方法、std::thread库、std::chrono库、智能指针系列(std::shared_ptr/std::unique_ptr/std::weak_ptr)(智能指针的实现原理一定要知道,最好是自己实现过)、线程库std::thread+线程同步技术库std::mutex/std::condition_variable/std::lock_guard等、lamda表达式(JAVA中现在也常常考察lamda表达式的作用)、std::bind/std::function库、其他的就是一些关键字的用法(override、final、delete),还有就是一些细节如可以像JAVA一样在类成员变量定义处给出初始化值。
条款55:让自己熟悉Boost
- Boost是C++开发者集结的社群。它和C++标准委员会之间有独一无二的密切关系,Boost由委员会成员创设,因此Boost成员和委员会成员由很大的重叠。Boost的目标是作为一个可被加入标准C++之各种功能的测试场。
- Boost程序库对付的主题非常繁多,包括:
- 字符串与文本处理,覆盖具备类型安全(type-safe)的pointer-like格式化动作、正则表达式,以及语汇单元切割(tokenizing)和解析(parsing)。
- 容器,覆盖数组、大小可变的bitsets以及多维数组。
- 函数对象和高级编程,覆盖若干用来作为TR1机能基础的程序库。其中一个程序库是Lambda。
- 泛型编程(Generic programming),覆盖traits classes。
- 模板元编程(Template metaprogramming,TMP)覆盖一个针对编译器assertions而写的程序库。
- 数学和数值(Math and numerics),包括有理数、八元数和四元数(octonions and quaternions)、常见的公约数(divisor)和少见的多重运算、随机数。
- 正确性与测试(Correctness and testing),覆盖隐式模板接口(implicit template interfaces)。
- 数据结构,覆盖类型安全(type-safe)的unions以及tuple程序库。
- 语言间的支持(Inter-language support),包括C++和Python之间的无缝互操作性(seamless interoperability)。
- 内存,覆盖Pool程序库,用来做出高效率而区块大小固定的分配器,以及多变化的智能指针(smart pointers)。
- 杂项,包括CRC检验、日期和时间的处理、在文件系统上来回移动等等。