译者(acgtyrant)笔记
- 实际上,缺省参数会改变函数签名的前提是改变了它接收的参数数量,比如把
void a()
改成void a(int b = 0)
, 开发者改变其代码的初衷也许是,在不改变「代码兼容性」的同时,又提供了可选 int 参数的余地,然而这终究会破坏函数指针上的兼容性,毕竟函数签名确实变了。 - 此外把自带缺省参数的函数地址赋值给指针时,会丢失缺省参数信息。
- 我还发现 滥用缺省参数会害得读者光只看调用代码的话,会误以为其函数接受的参数数量比实际上还要少。
friend
实际上只对函数/类赋予了对其所在类的访问权限,并不是有效的声明语句。所以除了在头文件类内部写 friend 函数/类,还要在类作用域之外正式地声明一遍,最后在对应的.cc
文件加以定义。- 本风格指南都强调了「友元应该定义在同一文件内,避免代码读者跑到其它文件查找使用该私有成员的类」。那么可以把其声明放在类声明所在的头文件,定义也放在类定义所在的文件。
- 由于友元函数/类并不是类的一部分,自然也不会是类可调用的公有接口,于是我主张全集中放在类的尾部,即的数据成员之后,参考 声明顺序 。
- 对使用 C++ 异常处理应具有怎样的态度? 非常值得一读。
- 注意初始化 const 对象时,必须在初始化的同时值初始化。
- 用断言代替无符号整型类型,深有启发。
- auto 在涉及迭代器的循环语句里挺常用。
- Should the trailing return type syntax style become the default for new C++11 programs? 讨论了 auto 与尾置返回类型一起用的全新编码风格,值得一看。
原文: https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/others/