Scott Meyers. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. 中国电力出版社. 高博译. 第一版
第二本 Effective C++ ,现在 C++ 11 已经十分普遍,因此先读 modern 版本。
./drafts/cppmodern42.01.typeinfer.md
./drafts/cppmodern42.02.auto.md
./drafts/cppmodern42.03.feats.md
- 7 | 在创建对象时注意区分 () 和 {}
- 8 | 优先选用 nullptr ,而非 0 或 NULL
- 9 | 优先选用别名声明,而非 typedef
- 10 | 优先选用限定作用域的枚举型别,而非不限定作用域的枚举型别
- 11 | 优先选用删除函数,而非 private 未定义函数
- 12 | 为意在改写的函数添加 override 声明
- 13 | 优先选用 const_iterator ,而非 iterator
- 14 | 只要函数不会发射异常,就为其加上 noexcept 声明
- 16 | 保证 const 成员函数的线程安全性
- 17 | 理解特种成员函数的生成机制
./drafts/cppmodern42.04.sptr.md
- 18 | 使用 std::unique_ptr 管理具备专属所有权的资源
- 19 | 使用 std::shared_ptr 管理具备共享所有权的资源
- 20 | 对于类似 std::shared_ptr 但有可能空悬的指针使用 std::weak_ptr
- 21 | 优先选用 std::make_unique 和 std::make_shared ,而非直接使用 new
- 22 | 使用 Pimpl 习惯用法时,将特殊成员函数的定义放到实现文件中
./drafts/cppmodern42.05.move.md
- 23 | 理解 std::move 和 std::forward
- 24 | 区分万能引用和右值引用
- 25 | 针对右值引用实施 std::move ,针对万能引用实施 std::forward
- 26 | 避免依万能引用型别进行重载
- 27 | 熟悉依万能引用型别进行重载的替代方案
- 28 | 理解引用折叠
- 29 | 假定移动操作不存在、成本高、未使用
- 30 | 熟悉完美转发的失败情形
./drafts/cppmodern42.06.lambda.md
- 31 | 避免默认的捕获模式
- 32 | 使用初始化捕获将对象移入闭包
- 33 | 对 auto&& 型别的形参使用 decltype ,以 std::forward 之
- 34 | 优先选用 lambda 式,而非 std::bind