00 Crash Course in C++
这一章快速过了一遍 C++ 主要涉及的语法,没有特定主题,也没有展开,这里就不总结其内容了。不过这一章有些实用的小提示值得总结一下。
不要在头文件中的全局命名空间(namespace
)下使用 using
指令或者声明,会传染所有包含它的文件。在更小的范围内,比如一个命名空间或者类(class
)作用域内使用也就还好。在模块(module
)的接口(interface
)文件中使用也还好,但是不应该导出(export
)。
不要把 0 放到数字字面量前面,比如 0173 不是十进制的 173,而是 123。
最好不要使用 C 风格的数据,用 std::array
或 std::vector
代替。
最好不要用 std::pair
作为返回值的类型,因为使用的地方必须使用 first
second
这样没有意义的名字访问结果。考虑使用 std::optional
或者返回结构体,或者其他方式来改进可读性。
推荐使用统一初始化(uniform initialization
),除非在一些地方不能这么勇。不过,个人习惯是对于原始类型,比如 int
bool
习惯使用 =
初始化。不过作者说代码风格统一,也是推荐的理由吧。
小心裸指针。如果涉及生命周期问题,用智能指针比较好。
对于成员函数,const
应用尽用。个人觉得其他地方,比如参数,也应该应用尽用。
引用一旦初始化,无法改变引用对象,只能改变其值。
推荐返回对象的方式是按值返回,而不是靠出参。
不要返回局部变量的引用,和 C 中不要返回局部变量的指针一样。
尽可能使用引用,除非不得已再使用指针。
auto
会去掉引用和 const
,而 decltype
不会。