本书大部分篇幅与程序设计的准则有关。此等准则虽然很重要,但没有一个程序员可以光靠准则讨生活。就像电视剧 Felix the Cat 所演的,“无论何时只要遭逢困境,他就打开他的锦囊,其中必有妙计”。哦,如果一个卡通人物可以有一个锦囊妙袋,C++程序员也可以有。请把这一章想象是你的锦囊妙袋的一个开端。
设计 C++软件时,有一些问题会不断重复出现。例如,如何让 constructors 及non-member functions 像虚函数一样地作用?如何限制 class 的实体(对象)个数?如何阻止对象产生于 heap 内?如何保证对象产生于 heap 内?如何能够产生某种对象,使它在“其他某些 class 的 member functions”被调用时,自动执行某些动作?如何令不同的对象共享同一份数据结构,却让用户错以为每个对象各自有一份数据?如何区分 operator[] 的读/写用途?如何产生一个虚函数,使其行为视多个(而非单一)对象的动态类型而定?
所有这些(以及其他更多)问题都在本章获得解答。本章描述 C++程序员常常遭遇的一些问题的解决办法,这些解法都已获得证明。我把这样的解法称为techniques(技术),也有人称之为 idioms(惯用手法)或 patterns(模式)。不论你如何称呼它们,当你每天与软件开发过程中的各种小冲突搏斗时,本章提供的信息可以带给你很多帮助。它也应该使你觉悟,不论你打算做什么事,C++几乎都有某种方法可以完成它。