Effective C++ 第三版 主要讲述在使用 C++ 的过程中需要注意的 55 条规则,对 C++ 的初学者和使用时间不长的读者都有一定的借鉴意义。这里我将我在阅读过程中的一些笔记记录下来以供以后参考,并将阅读过程搭配使用的可运行代码也一并附上以便更清楚的理解条款的寒意以及应用场景。同时,由于该书出版时间比较久远,有些标准已经发生了变化,因此也会附上目前标准的一些例子,欢迎有兴趣的读者进行补充!
序号 | 条款 | 代码 |
---|---|---|
让自己习惯 C++ | ||
01 | 视 C++ 为一个语言联邦 | |
02 | 尽量以 const,enum,inline 替换 #define | code02 |
03 | 尽可能使用 const | code03 |
04 | 确定对象被使用前已被初始化 | code04 |
构造/析构/赋值运算 | ||
05 | 了解 C++ 静默编写和调用的函数 | code05 |
06 | 明确拒绝你不想使用的编译器自动生成的函数 | code06 |
07 | 为多态基类声明 virtual 析构函数 | code07 |
08 | 不要在析构函数中抛出异常 | code08 |
09 | 不要在构造和析构过程中调用 virtual 函数 | code09 |
10 | 令 operator= 返回一个 *this 的引用 |
code10 |
11 | 在 operator= 中处理自我赋值 |
code11 |
12 | 复制对象时确保复制其一个成员 | code12 |
资源管理 | ||
13 | 使用对象管理资源 | code13 |
14 | 在资源管理类中小心 copy 行为 | code14 |
15 | 在资源管理类中提供对原始资源的访问 | code15 |
16 | 成对使用 new 和 delete 时要采取相同形式 |
code16 |
17 | 以独立语句将 new ed 对象置入智能指针 |
code17 |
设计与声明 | ||
18 | 让接口容易被正确使用并且不易被错误使用 | |
19 | 像设计 type 一样设计 class | |
20 | 尽量使用常值引用传递代替值传递 | code20 |
21 | 必须返回对象时,不要试图返回其引用 | code20 |
实现 | ||
继承与面向对象设计 | ||
模板与泛型编程 | ||
定制 new 和 delete | ||
杂项讨论 | ||
To be continue... |