第三章
C++11和C++14有大量可以炫耀的特征:auto
,智能指针,移动语义,lambda表达式,多线程等等。它们每个都很重要,值得拿出一章来讲解。但在此之前我们还需要走好从C++98到现代C++的每一小步:什么时候应该用大括号而不是小括号创建对象?为什么别名声明(alias declaration)优于 typedef
?constexpr
与const
有何区别?const
成员函数与线程安全有什么关系?等等等等,本章就将一个接一个回答这些问题。
以下为各条款(Item)链接:
Item 7: 区分创建对象时使用 () 和 {}
Item 8: 倾向于使用 nullptr 而不是 0 或 NULL
Item 9: 倾向于使用别名声明(alias declaration)而不是 typedef
Item 10: 倾向于使用有界的枚举(scoped enum)而不是无界的枚举(unscoped enum)
Item 11: 倾向于使用delete而不是private+只声明不定义来屏蔽函数
Item 12: 使用 override 关键字声明重写函数
Item 13: 使用迭代器时尽可能使用 const_iterator
Item 14: 对不会产生异常的函数使用 noexcept 声明
Item 15: 尽可能使用 constexpr
Item 16: 确保 const 成员函数线程安全
Item 17: 理解特殊成员函数的生成
笔者认为本章全面地覆盖了C++11中很多基石性质的特性,属于基本功的修炼,非常值得各位认真研读。我们下章智能指针见。