41. 了解隐式接口和编译器多态
面向对象编程世界总是以显示接口和运行期多态解决问题。
Templates 中,隐式接口和编译器多态更加重要。
隐式接口,不基于函数签名式,而是由有效表达式组成。
状态之间的转移:
如果有大量处于阻塞状态的进程,进程可能会占用着物理内存空间,显然不是我们所希望的,毕竟物理内存空间是有限的,被阻塞状态的进程占用着物理内存就一种浪费物理内存的行为。
所以,在虚拟内存管理的操作系统中,通常会把阻塞状态的进程的物理内存空间换出到硬盘,等需要再次运行的时候,再从硬盘换入到物理内存。
这就是虚拟内存的作用,为了引入虚拟内存,操作系统做了很多工作。
26 尽可能延后变量定义式的出现时间
27 尽量少做转型动作(Minimize casting)
28 避免返回 handles 指向对象内部成分
29 为 异常安全(exception-safe)努力是值得的
30 透彻了解 inlining
的里里外外
31 将文件间的编译依存关系降至最低
尽量延后变量定义式的出现,这样做可增加程序的清晰度并改善程序效率。
const_cast,将对象的常量性转除(cast away the constness)。
dynamic_cast
reinterpret_cast
static_cast,强迫隐式转换,将 non-cast 转为 cast,或则 int 转为 double。
18 让接口容易被正确使用,不易被误用
如果用户企图使用某个借口却没有获得他预期的行为,这个代码不该通过编译;如果代码通过了编译,它的作为就该是客户所想要的。
19 设计 class 犹如设计 type
20 宁以 pass-by-reference-to-const
替换 pass-by-value
21 必须返回对象时,别妄想返回其 reference
22 将成员变量声明为 private
23 宁以 non-member
、non-friennd
替换 member 函数
24 若所有参数皆需类型转换,请为此采用 non-member 函数
25 考虑写出一个不抛出异常的 swap 函数