00 Crash Course in C++

这一章快速过了一遍 C++ 主要涉及的语法,没有特定主题,也没有展开,这里就不总结其内容了。不过这一章有些实用的小提示值得总结一下。

不要在头文件中的全局命名空间(namespace)下使用 using 指令或者声明,会传染所有包含它的文件。在更小的范围内,比如一个命名空间或者类(class)作用域内使用也就还好。在模块(module)的接口(interface)文件中使用也还好,但是不应该导出(export)。

不要把 0 放到数字字面量前面,比如 0173 不是十进制的 173,而是 123。

最好不要使用 C 风格的数据,用 std::arraystd::vector 代替。

最好不要用 std::pair 作为返回值的类型,因为使用的地方必须使用 first second 这样没有意义的名字访问结果。考虑使用 std::optional 或者返回结构体,或者其他方式来改进可读性。

推荐使用统一初始化(uniform initialization),除非在一些地方不能这么勇。不过,个人习惯是对于原始类型,比如 int bool 习惯使用 = 初始化。不过作者说代码风格统一,也是推荐的理由吧。

小心裸指针。如果涉及生命周期问题,用智能指针比较好。

对于成员函数,const 应用尽用。个人觉得其他地方,比如参数,也应该应用尽用。

引用一旦初始化,无法改变引用对象,只能改变其值。

推荐返回对象的方式是按值返回,而不是靠出参。

不要返回局部变量的引用,和 C 中不要返回局部变量的指针一样。

尽可能使用引用,除非不得已再使用指针。

auto 会去掉引用和 const,而 decltype 不会。