第0章 导读(译者的话)(1)
读者对象
很不容易三言两语就说明此书的适当读者。作者Lippman参与设计了全世界第一套C++(www.cppentry.com)编译器cfront,本书就是一位伟大的C++(www.cppentry.com)编译器设计者向你阐述他如何处理各种explicit(明确出现于C++(www.cppentry.com)程序代码)和implicit(隐藏于程序代码背后)的C++(www.cppentry.com)语意。
对于C++(www.cppentry.com)程序老手,这必然是一本让你大呼过瘾的绝妙好书。
C++(www.cppentry.com)老手分两类:一种人把语言用得烂熟,OO观念也有;另一种人不但如此,还对于台面下的机制,如编译器合成的default constructor、object的内存布局等有莫大的兴趣。本书对于第二类老手的吸引力自不待言;至于第一类老手,或许你没那么大的刨根究底的兴趣,不过我还是非常推荐你阅读此书。了解C++(www.cppentry.com)对象模型,绝对有助于你在语言本身以及面向对象观念两方面的层次提升。
你需要细细推敲每一个句子、每一个例子,囫囵吞枣是完全没有用的。作者是C++(www.cppentry.com)大师级人物,并且参与开发了第一套C++(www.cppentry.com)编译器,他的解说以及诠释鞭辟入里,你务必在看过每一小段之后,融会贯通,把思想观念化为己有,再接续另一小节。但阅读顺序并不需要按照书中的章节排列。
阅读顺序
我个人认为,第1、3、4章最能带给读者迅速而最大的帮助,这些都是经常引起程序员困惑的主题。作者在这些章节中有不少示意图(我自己也加了不少)。你或许可以从这三章挑着看起。
其他章节比较晦涩一些(我的感觉),不妨"视可而择之"。
当然,这都是十分主观的认定。客观的意见只有一个:你可以随你的兴趣与需求,从任一章开始看起。各章之间没有必然关联性。
翻译风格
太多朋友告诉我,他们阅读中文计算机书籍,不论是著作或译作,最大的阅读困难在于一大堆没有标准译名的技术名词或习惯用语(至于那些误谬不知所云的奇怪作品当然本就不在考虑之列)。其实,就算国家相关机构指定了统一译名(或曾有过,谁知道?),流通于工业界与学术界之间的还是原文名词与术语。
对于工程师,我希望我所写的书和我所译的书能够让各位读来通体顺畅;对于学生,我还希望多发挥一点引导的力量,引导各位多使用、多认识原文术语和专有名词,不要说出像"无模式对话盒(modeless dialog)"这种奇怪的话。
由于本书读者定位之故,我决定保留大量的原文技术名词与术语。我清楚地知道,在我们的技术领域里,研究人员或工程师如何使用这些语汇。
当然,有些中文译名应用较普遍,也较贴切,我并不排除使用。其间的挑选与决定,不可避免地带了点个人色彩。
下面是本书出现的原文名词(按字母排序)及其意义:
英文名词 中文名词或(及)其意义
access level 访问级,存取级。就是C++(www.cppentry.com)的public、private、protected三种等级
access section 访问区段,存取区段。就是class中的public、private、protected三种段落
alignment 边界调整,调整至某些bytes的倍数。其结果视不同的机器而定。例如32位机器通常调整至4的倍数
bind 绑定,将程序中的某个符号真正附着(决议)至一块实例上
chain 串链
class 类
class hierarchy class体系,class层次结构
composition 组合。通常与继承(inheritance)一同讨论
concrete inheritance 具体继承(相对于抽象继承)
constructor 构造函数
data member 数据成员(或被称为member variable)
declaration,declare 声明
definition,define 定义(通常附带"在内存中挖一块空间"的行为)
derived 派生
destructor 析构函数
encapsulation 封装
explicit 显式的(通常指C++(www.cppentry.com)程序代码中明确出现的)
hierarchy 体系,层次结构
implement 实现(动词)
implementation 实现品、实现物。本书有时候指C++(www.cppentry.com)编译器。大部分时候是指class member function的内容
implicit 隐式的、暗喻的(通常指未出现在C++(www.cppentry.com)程序代码中的)
inheritance 继承
inline 内联(C++(www.cppentry.com)的一个关键词)
instance 实例(有些书籍译为"案例",极不妥当)
layout 布局。本书常常出现这个字,意指object在内存中的数据分布情况
mangle 名称切割重组(C++(www.cppentry.com)对于函数名称的一种处理方式)
member function 成员函数。或被称为function member
members 成员,泛指data members和member functions
object 对象(根据class的声明而完成的一份占有内存的实例)
offset 偏移位置
operand 操作数
operator 运算符
overhead 额外负担(因某种设计,而导致的额外成本)
overload 重载
overloaded function 多载函数
override 改写(对virtual function的重新设计)
paradigm 范式(请参考第1章第22页)
pointer 指针
polymorphism 多态("面向对象"最重要的一个性质)
programming 程序设计、程序化
reference 参考、引用(动词)
reference C++(www.cppentry.com)的&运算符所代表的东西。当做名词解
resolve 决议。函数调用时链接器所进行的一种操作,将符号与函数实例产生关联。如果你调用func()而链接时找不到func()实例,就会出现"unresolved externals"链接错误
slot 表格中的一格(一个元素),条孔,条目,条格
subtype 子类型
type 类型,类别(指的是int、float等内建类型,或C++(www.cppentry.com) classes等自定类型)
virtual 虚拟
virtual function 虚拟函数
virtual inheritance 虚拟继承
virtual table 虚拟表格(为实现虚拟机制而设计的一种表格,内放virtual functions的地址)