⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 勘误:c++ primer中文版.txt

📁 C++ Primer 第三版中文版
💻 TXT
📖 第 1 页 / 共 4 页
字号:
本勘误档更新日期: 2002/12/13

《C++ Primer 3/e 中文版》
Addison-Wesley.  峰资讯股份有限公司 合作出版, 1999

目前刷次: 1999/09 第一刷 印量  0001~3000
          1999/10 第二刷 印量  3001~5000(版权页记录为 3001~4500,错误)
          2000/03 第三刷 印量  5001~8000
          2000/11 第四刷 印量  8001~11000
          2001/10 第五刷 印量 11001~14000(2001修订本。制版疏失以致未列版权页)
            2001修订本特色:
              1. 本表所载勘误至 2001/07/23 止皆已修正於纸本
              2. 目录附黑色页边,有益查找
              3. 改用网片印刷,网底效果极佳(唯 p252 原图扫描效果不佳)
              4. 摺口介绍 8 本循序渐进的好书
          2002/08 第六刷 印量 14001~16500

原着:C++ Primer 3/e, 
      by Stanly B. Lippman & Josee Lajoie,
      Addison Wesley/1998


注意:英文版 1999.08.10 之前的勘误已直接修正於中文版内。
原文书的 errata 在
(1)  http://people.we.mediaone.net/stanlipp/index.html
(2)  http://www.awl.com/cseng/titles/0-201-82470-1/

注意:自 2000/05/18 之後的勘误条款,皆加上修正日期,
并以日期排序,以利您的寻找。

======================================================

书籍内容更正,有两种作法,一是在网际网路上做个专属勘误
网页,让大家上去看。这是比较即时的作法。而更理想更负责
的作法是:不但有勘误网页,并且在新刷中予以更正 -- 如果
有新刷的话。

不过,理想与现实之间需要一点协调。书籍的制作是这样的,
制版与印刷时,是以台(8 或 16 页)为单位。因此,每换一
页,同台的各页统统要换过。这便造成印制成本的大量增加。

以前,我从不考虑成本,只要我认为书籍内容有修改必要,即
使只是某个字词用得不甚理想,我都会请出版社更新。出版社
也都全力配合(这一点让我非常感谢)。

慢慢地,我的行事不再这麽霹雳,我觉得我多少也要站在出版
社的立场想想。所以我打算,如果是关系到对错正误的根本性
问题,我便一定在新刷修正。如果是易判别的错别字或排版误
失或用词不很恰当┅等等,我便先在勘误网页上明载,但不求
立刻於新刷中更正。直到收集来的这类误失较为密集了,才一
并於下一刷修正。

哪些是新刷已修正的,哪些是暂请读者自行动手更改的,我会
在勘误网页(网址见书封底)上很清楚地说明。

这是个便宜法门,请读者见谅。

书籍应该在出版前就详细检查,以完美之姿出现。但是完美很
难达到。对於下列大大小小轻重不等的误失,我谨向读者说抱
歉。

本档欢迎广为流传,谢谢。


以下为更新记录。如果您购买的是第 n 刷,请将以下第 n+1
刷之後的更新内容自行修正至书上。谢谢

======================================================

二刷更正内容:
(注意,Lm 表示第 m 行,L-n 表示倒数第 n 行)

■导读 p23
原文:
template <typename T>
T func( T p1, T p2, int p3 ) // ( T p1, T p2, int p3 ) 称为 template parameter list
{     ...     }              // p1, p2 称为型别叁数(type parameter)
                             // p3 称为非型别叁数(nontype parameter)
更正:
template <typename T>        // <typename T> 称为 template parameter list
T func( T p1, T p2, int p3 ) //   其中 T 是 template type parameter(型别叁数)
{     ...     }              //   另有所谓 template nontype parameter(非型别叁数),
                             //   本例未出现。

■p36 L-2
原文:当它後面紧跟着一个 class 名称
更正:当它紧跟着一个 class 名称後面
感谢:黄向阳先生

■p106 L17(原书笔误)
原文:int *&ptrVal2 = pi;
更正:int *&refPtr = pi;
感谢:黄向阳先生

■p342: L-4(原书笔误)
原文:以下示范利用 rswap() 交换两个指标
更正:以下示范利用 ptrswap() 交换两个指标

■p496: L13
原文:inline 或 extern 修饰词应该放在 template 叁数列之前,而非┅
更正:inline 或 extern 修饰词应该放在 template 叁数列之後,而非┅

■p1130: copy_backward() 下的第二段文字(原书错误)
原文:
例如,给予数列 {0,1,2,3,4,5},我们可以复制最後三个元素 (3,4,5) 到
最前三个元素 (0,1,2) 身上,作法是将 first 设定为元素 0 的位址,
last1 设定为元素 3 的位址,last2 设定为元素 5 的下一个位址。
於是元素 5 会被指定到原来的元素 2 身上,元素 4 会被指定到原来的元素 1 身上,
元素 3 会被指定到原来的元素 0 身上。最後的结果是 {3,4,5,3,4,5}。

更正:
例如,给予数列 {0,1,2,3,4,5},我们可以复制最前三个元素 (0,1,2) 到
最後三个元素 (3,4,5) 身上,作法是将 first 设定为元素 0 的位址,
last1 设定为元素 3 的位址,last2 设定为元素 5 的下一个位址。
於是元素 2 会被指定到原来的元素 5 身上,元素 1 会被指定到原来的元素 4 身上,
元素 0 会被指定到原来的元素 3 身上。最後的结果是 {0,1,2,0,1,2}。

================================================================

三刷更正内容:
(注意,Lm 表示第 m 行,L-n 表示倒数第 n 行)

■p252 图片过於粗糙,重制。

■p318 最後一段第二行(误译)
原文:这种作法之所以能够成功,是因为这些 containers 保证其
      元素实体会以连续的方式出现(存在)。
更正:这种作法之所以能够成功,是因为这些 containers 保证其
      键值相同的元素会连续出现(存在)。

■p322 最後一段第二行(修润)
原文:我们称 stack 为一种所谓的 container adapter,因为它
      在底层的 container 集合体身上课徵 stack 抽象性质。
更正:我们称 stack 为一种所谓的 container adapter,因为它
      系利用底层各类型 container 加工完成 stack 抽象性质。

■p495, L4(原书笔误)
原文:// ok: Type used many times in template parameter list
更正:// ok: Type used many times in function parameter list
感谢:kylin

■p501, L12(中译本误植)
原文:min2() 的第一个函式叁数是个型别为 *Type 的指标。
更正:min2() 的第一个函式叁数是个型别为 Type* 的指标。

■p503, L-5(原书笔误)
原文:上述的 template 引数 T 从第一个函式引数中推导得 int,
      又自第二个函式引数中推导得 unsigned int,因此 template 引数推导失败。
更正:上述的 template 引数 T 从第一个函式引数中推导得 unsigned int,
      又自第二个函式引数中推导得 int,因此 template 引数推导失败。
感谢:leetron

■p565, L7(原书笔误)
原文:Exception declaration 是函式介面的一部份,所以它必须...
更正:Exception specification 是函式介面的一部份,所以它必须...

■p576, 最上(中译稿漏印,缺少两个右大括号)
原文:     // ...
更正:     }
           // ...
       }
注意:我在本书第三刷(3/p)中将 p575 和 p576 相邻处的 layout 做了
一点点挪移,所以第三刷的读者在 p576 最上所见并非上述那样子。请勿疑虑。

■p595, L-5
原文:当然,「令一个 non-const iterator 指向一个 const iterator」总是可以的。
更正:当然,「将一个 non-const iterator 指派给一个 const iterator」总是可以的。

■p596(原书笔误)
说明:本页下方有三点,讨论 back_inserter, front_inserter, inserter.
      并均利用 unique_copy() 做为使用范例。每一个 unique_copy() 都
      遗漏了最後的右大括弧。
更正:请为 unique_copy() 加上最後的右大括弧。
感谢:Megadeth

■p652, L-1(中译稿漏印,少了最後一行)
原文:有着以下的型别:
更正:有着以下的型别: int (Screen::*)()

■p731, 第一段(中译误失)
原文:
举个例子,如果我再次修改 Account class 的定义,令 _name 的型别为 string,
那麽预设的 memberwise 指派动作:
newAcct = oldAcct;
就会被编译器唤起,犹如编译器为我们产生了以下的 copy assignment 运算子:

更正:
举个例子,如果我再次修改 Account class 的定义,令 _name 的型别为 string,
那麽当:
newAcct = oldAcct;
预设的 memberwise 指派动作就会被编译器唤起,犹如编译器为我们产生了
以下的 copy assignment 运算子:

■p915, 第二段文字,第一行(译笔不佳,重译)
原文:一个 derived class constructor 只能合法地唤起其
      「直接 base class」的 constructor
更正:一个 derived class constructor 能够合法直接唤起的 construtor 只有其
      「直接 base class」的 constructor

■p915, 17.4.4 的标题(修润)
原文:17.4.4 惰式错误侦测(Lazy Error Detection)
更正:17.4.4 缓式错误侦测(Lazy Error Detection)
注意:请同时修改
      p.ix, 目录
      p.916, L6
      p.981, 18.3.2 标题前两行
      p.984, L-6
      p.1224, 索引
讨论:我想,译为「缓式」可能比译为「惰式」更符合华人用语。在 Scott Meyers
的《More Effective C++》item17 "Consider using lazy evaluation" 中,
对於 Lazy evaluation 有深刻的解说,并提出一个对应词:eager evaluation。
我把 eager evaluation 译为「急式评估」。

■p941, 17.5.8 标题(误译)
原文:虚拟函式、虚拟解构式 constructor、虚拟解构式 destructor
更正:在建构式(constructors)与解构式(destructors)中呼叫虚拟函式
注意:请同时修改目录 (p.x)

■p1006, L-13(译笔不佳,重译)
原文:一旦成为 base class,class template 必须完整列出其叁数列。
修改:欲令一个 class template 扮演 base class 的角色,我们必须完整列出其叁数列。

■p1045  19.2.7 标题(笔误)
原文:19.2.7 Constructors(解构式)和 Function try Blocks 的关系
更正:19.2.7 Constructors(建构式)和 Function try Blocks 的关系
感谢:leetron
注意:请同时修改目录 (p.x)

■p1126, adjacent_difference 内文第二行(误译)
原文:给予数列 {0,1,1,2,3,5,8},新数列的 first 元素是
      原数列的 first 元素的拷贝:0。
更正:给予数列 {0,1,1,2,3,5,8},新数列的第一个元素是
      原数列的第一个元素的拷贝:0。

■p1126, L-15, p1127, L9(原书错误)
说明:这两行出现的 times,是某 function object 的旧名称,
      在 C++ standard 中已改名为 multiplies. 见 p590
更正:将这两行出现的 times<int> 改为 multiplies<int>

■p1127, adjacent_find() 第二版本规格,最後一行(原书错误)
原文:ForwardIterator last, Predicate pred);
更正:ForwardIterator last, BinaryPredicate pred);

■p1128, binary_search() 第二版本规格,缺一行(原书遗漏)
原文:bool
      binary_search(ForwardIterator first,
                    ForwardIterator last, const Type &value,
                    Compare comp);
更正:请在 bool 前面加上一行
      template <class ForwardIterator, class Type, class Compare>

■p1149, inner_product() 规格说明最後一行(原书错误)
原文:  (2+1) - (3+2) - (5+3) - (8+4)
更正:- (2+1) - (3+2) - (5+3) - (8+4)

■p1166, L9, L20(原书错误)
■p1167, L1, L3 (原书错误)
说明:这四行出现的 times,是某 function object 的旧名称,
      在 C++ standard 中已改名为 multiplies. 见 p590
更正:将这四行出现的 times<int> 改为 multiplies<int>

■p1177, rotate() 规格说明第一行(原书错误)
原文:rotate() 会将 [first,middle) 范围内的元素搬移到 container 尾端。
更正:rotate() 会将 [first,middle) 范围内的元素搬移到 last 所指位置。


■p433, p434, p453, p454, p767, p769, p770, p771, p774, p781, p790,
  p849, p863, p865, p866, p881, p898, p911, p914
字体变小,制版不当(做了缩版动作)。第三刷已重新制版。


==================================================================

★英文 dimension 一词用於阵列有两义:(1) 维度 (2) 尺度(元素个数)
我在翻译过程中一时拘泥,译得不好。现重新检讨如下(抱歉,页数颇多):

■p24: L-13
原文:阵列的名称是 fibon。这是一个整数阵列,维数为 9。
更正:阵列的名称是 fibon。这是一个整数阵列,尺度(元素个数)为 9。

■p24: L-6
原文:最後一个元素,我们应该把维数减 1 做为索引值
更正:最後一个元素,我们应该把尺度(元素个数)减 1 做为索引值

■p28: L-9
原文:new 算式的第二个版本配置出一个特定型别和特定维数的阵列。
更正:new 算式的第二个版本配置出一个特定型别和特定尺度(元素个数)的阵列。

■p34: L7
原文:我把阵列的维数指定给 array_size。
更正:我把阵列的大小指定给 array_size。

■p114: 最後一段文字
原文:
阵列的定义系由型别符号、识别名称、维度(dimension)三者构成。
维度以一个中括号表示,指出阵列之中有多少元素。阵列的维度大小必须
大於或等於 1。维度值必须是一个常数算式,也就是说,它必须能够在
编译时期便被编译器核定(evaluate)其值。换言之一个 non-const
变数不能够用来指定阵列的维度大小。

更正:
阵列的定义系由型别符号、识别名称、尺度(dimension)三者构成。
尺度以一个中括号表示,指出阵列之中有多少元素。阵列的尺度必须
大於或等於 1。尺度必须是一个常数算式,也就是说,它必须能够在
编译时期便被编译器核定(evaluate)其值。换言之一个 non-const
变数不能够用来指定阵列的尺度大小。

■p115: L2
原文:只能够在执行时期完成,所以它不能够用来指定阵列维度。
更正:只能够在执行时期完成,所以它不能够用来指定阵列尺度。

■p115: L-13
原文:面对一个明白初始化的阵列,你不需要再指定其维度,
更正:面对一个明白初始化的阵列,你不需要再指定其尺度,

■p115: L-9
原文:如果维度被明白指出,那麽串列中的元素个数就不能够超越该值,
更正:如果尺度被明白指出,那麽串列中的元素个数就不能够超越该值,

■p116: L1
原文:ca1 的维度值是 3 而 ca2 的维度值是 4。
更正:ca1 的尺度(元素个数)是 3 而 ca2 的尺度是 4。

■p162: L8
原文:像是阵列的维数,或是 template 的 nontype 叁数。
更正:像是阵列的尺度(元素个数),或是 template 的 nontype 叁数。

■p415: L13
原文:以 new 算式配置获得的阵列,其维度可被指定为┅
更正:以 new 算式配置获得的阵列,其尺度(元素个数)可被指定为┅

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -