文章目录
条款01:视C++为一个语言联邦
请记住
C++高效编程守则视状况而变化,取决于你是用C++的哪一部分。(废话)
我的理解
C++包含四个主要的次语言:
- C。C++本质上以C为基础。
- Object-Oriented C++。也就是带有面向对象的部分,构造与析构函数、封装、继承……
- Template C++。C++的泛型编程部分。
- STL。程序库,包含容器、迭代器、算法等内容。
条款02:尽量以 const, enum, inline 替换 #define
请记住
- 对于单纯常量,最好以const对象或enums替换**#defines**。
- 对于形似函数的宏(macros),最好改用inline函数替换**#defines**。
我的理解
做这些工作的初衷在于,尽量减少预处理器的工作,即使这会增加编译器的工作,这样会方便你的调试,减少出错
条款03:尽可能使用const
请记住
- 将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体。
- 编译器强制实施bitwise constness,但你编写程序时应该使用conceptual constness。
- 如果const成员函数和non-const成员函数实质等价,令non-const版本调用const版本可避免代码重复。
我的理解
- const有利于编译器检错
- 利用mutable关键字,使我们在const函数中同样能够改变某些变量
条款04:确定对象被使用前已先被初始化
请记住
- 为内置型对象进行手工初始化,因为C++不保证初始化它们。
- 构造函数使用成员初值列,且次序匹配。
- 使用local static对象替换non-local static对象。
我的理解
很好理解,用初值列,而不是赋值;将外部对象搬入自己的专属函数,与单例模式的思路相同,确保概之被初始化。