CPrimer答客问(侯捷)

上传人:宝路 文档编号:20905132 上传时间:2017-11-22 格式:DOC 页数:17 大小:74.85KB
返回 下载 相关 举报
CPrimer答客问(侯捷)_第1页
第1页 / 共17页
CPrimer答客问(侯捷)_第2页
第2页 / 共17页
CPrimer答客问(侯捷)_第3页
第3页 / 共17页
CPrimer答客问(侯捷)_第4页
第4页 / 共17页
CPrimer答客问(侯捷)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《CPrimer答客问(侯捷)》由会员分享,可在线阅读,更多相关《CPrimer答客问(侯捷)(17页珍藏版)》请在金锄头文库上搜索。

1、发信人: Heavywind (你把我灌醉), 信区: Program 标 题: C+ Primer 答客问(侯捷) 发信站: 栋力无限 (Sun May 6 23:41:11 2001), 转信 C+ Primer 答客问 (1) 1999.10.03 Don wrote (1999/10/02): 侯老师! 我是一个 C+ 初学者,听说 C+ Primer 这本书不错 於是就买了您的大作,但是: 一、这本书一开始我就看不懂了! 尤其第二章,那是必需先有一些基本知识的人才看得懂的! 侯捷回覆: 第二章章名纵览 C+ ,是让你对 C+ 的特性做一个总览。 本书前言 p.xv 第二段(我还特别

2、highlight 起来)说: - quote(前言 p.xv)- 第二章的配速有点快,部份读者可能会觉得无法负荷。如果是这样, 我建议你不妨跳着读,稍後再回头仔细看。 - unquote - 本书第一篇 p.2 又说: - quote(p.2)- 在第一篇中,我对整个 C+ 语言做了快速的浏览。我的目的 是提供语言特性的导入,如此一来我们就可以在完全面对这些 性质之前,比较无拘无束地取用其中一些观念。例如,在第 13 章 之前我们并不会细看 classes,但如果等到那个时候才谈及 classes,我们会有很多难以表现的或不恰当的程式实例。 对整个语言先做一次浅尝之旅的第二个理由是基於美学的

3、考量。 除非你先让自己曝露於贝多芬奏鸣曲所呈现的美感与复杂度之下, 否则明显无关联的细节如升半音、降半音、八度音阶、和弦等等 必定令人呵欠连连。但是在精通那些细节之前,我们又没有办法 做音乐 。程式设计也一样,踩踏着迷宫般的运算子优先权 或标准算术转换规则 ,对於精通 C+ 程式设计而言,是一种 必要(但也一定令人生闷)的基础。 - unquote - 此外本书第一篇 p.3 最後一段说: - quote(p.3)- 部份读者可能会认为,第章过於粗糙,许多呈现出来的素材并 没有完整的介绍。完整的介绍其实出现在後继各章中。如果你发 现自己开始有点被淹没或难以忍受的感觉,我建议你略读本章就 好,或

4、甚至跳过。直到你对那些素材更加熟悉,再回头重读这一 部份。第章起,我要展开传统的叙事体步调;对第章适应不 良的读者,我建议在这里整军经武,重新出发。 - unquote - Don wrote : 二、我所使用的是 VC+5.0 里面的程式码,几乎是都不能 compile 过的 像是 string abc 之类的宣告不能用 complex 的宣告也不能用! 我都搞不清楚是谁的错,mcrosoft 还是 C+ sandard ! 但是重点是在,我不能使用来写能用的程式啊! gc+是否有相容性比较高呢? 请看这个没有错误的程式 : / BCB : bcc32 test.cpp / VC : cl

5、-GX test.cpp #include #include #include using namespace std; void main() string abc = this is a test; cout purei(0, 7); cout ,我列了三项, 其中第二项说: - quote(p.19)- 您可能需要为许多程式加上一行 using directive std;(其意义 请叁考 8.6.4 节) ,可加在所有 #include 指令之後。 - unquote - 而 8.6.4 节的最後一段指出: - quote(p.441)- 本书之中,为了保持程式码的精简,同时也因为许多

6、实例是在 未支援 namespaces 的编译器上编译,所以我并未在程式码中 明白显示必要的 using declarations。我假设程式码中应该 都有针对 namespace std 成员所需要的 using declarations。 译注:读者如果想要编译本书所附之范例程式码,请特别注意这一点。 - unquote - 你询问各编译器对於 C+ Standard 的相容性。我想除了 template 以及 STL 两部份外,各家编译器对 C+ Standard 的支援程度都是差不多的。至於这两部份,我先前在 CompBook 版上 的文章曾经提醒过大家。 对C+ Primer 中文版

7、 (侯捷译/ 峰/1999)的任何问题, 欢迎来信(或版上公开)讨论。如果您是初学者,不具备跳跃阅读 的能力,我希望您按照书籍的阅读动线,仔细阅读,然後才提出问题。 谢谢。 - the end C+ Primer 答客问 (2) 1999.10.11 Yi-Lun Chen wrote (1999/10/11): 侯 Sir: 在您所译的 C+ Primer的 p.24的倒数第 6以及第 13行中, 您所提到的维数好像有点怪怪的,那一个 Array不是 一维(one dimension)的 Array吗? 可能改成项数会清楚一点吧._ ps.因为手头上面没有原文的 primer(想说有侯 Si

8、r翻译 就不用买了.:p)所以并不清楚原文所用的单字,如果 真的是用 dimension或者其他同义的字,侯 Sir就当我 在耍笨好喽.:) 侯捷回答: 谢谢您的来信。原文确为 dimension,通常译为维 。在 C+ Primer 书中,作者把 ia9 的 9 称为 dimension, 把 ia34 称为 two-dimensional array(两个维度的阵列, 见 3.9.2 节) 。由於我们通常习惯把两个维度的阵列 简称为二维阵列,致引起文字上的混淆。 为了区分两者,我在C+ Primer 中文版把 ia9 的 9 称为维数或维度值 ;把 ia9 称为一维阵列,拥有 一个维度 ;

9、把 ia34 称为二维阵列,拥有两个维度 ; 把 ia345 称为三维阵列,拥有三个维度 。这个作法 不甚理想,而且可能亦未全面实现而有漏网之鱼。 Previn wrote : (1998/10/12) dimension 在数学上称作维度没错,但在英文中 也当作尺寸解,後者也许更常用。在翻译时一 定要看上下文,否则就会翻错。我个人认为 维数 还是不妥,它不管怎麽看都是 有多少 个维度 的意思,不知侯大师以为然否? 请千万别称呼我大师。 您说的很对。我在翻译过程中一时拘泥,译得不好。 我将全面检讨本书有关於 dimension 的译词, 并想办法更正。谢谢您。 * * * * * * * *

10、* * * * * * * * by the why,说点题外话。 说到书籍内容更正,有两种作法,一是在网际网路上做个 专属勘误网页,让大家上去看。例如C+ Primer 中文版 的勘误网页放在 http:/。这是比较即时 的作法。另一个更理想更负责的作法是在新刷中更正。 不过,理想与现实之间需要一点协调。书籍的制作是这样 的,制版与印刷时,是以台(8 或 16 页)为单位。 因此,每换一页,同台的各页统统要换过。这便造成成本的 大幅增加。 以前,我从不管什麽成本不成本,只要我认为书籍内容有 修改必要,即使只是某个字词用得不甚理想,我都会请 出版社更新。出版社也都全力配合(这一点让我非常感谢)

11、 。 慢慢地,我的行事不再这麽霹雳,我觉得我多少也要站在 出版社的立场想想。所以我打算,如果是关系到对错正误的 根本性问题,我便一定在新刷修正。如果是易判断的错别字 或排版误失或用词不很恰当等等,我便先在勘误网页上明载, 但不求立刻於新刷中更正。待收集来的这类误失较为密集了, 才一并於下一刷修正。 哪些是新刷已修正的,哪些是暂请读者自行动手更改的, 我会在勘误网页上很清楚地说明。 这是个便宜作法,请读者见谅。谢谢。 - the end C+ Primer 答客问 (3) 1999.10.11 Allan wrote (1999/10/10): 侯 sir 您好: 我现在正在研读您译的 C+ P

12、rimer。对於书中 118 页 3.9.1 节 最後一段的叙述有点疑问。书上说 ia 是一个二维阵列,而 ia1,2 即为 ia2。我的疑问是: (1) ia 明明是二维阵列,写 ia2 合法吗? (2) 书上说 ia2 所存取到的是 ia 的第三个 row 的第一个元素。 这意思是指 ia20 吗?难道说: int ia43 = . ; / (a) ia1,2 = 5; / (b) 第二行的意思是 ia20=5 吗? 侯捷回答: (1) ia2 是合法的,表示 &(ia20)。就好像面对 一维阵列 int ia10; 我们可以 ia 代表 &(ia0) 一样。 (2) 书上的文字有点容易引

13、起误会。我们不能只给定一维索引, 就想选定二维阵列的某个元素。你所举的 (b) 式会出现编译错误。 书上的意思其实就是上述 (1) 的意思。 写个小程式瞧瞧: #include void main() int ia23 = 0, 1, 2, 3, 4, 5 ; / 可视为两个次阵列的组合 cout delete 1. 翻译原文书,不免翻译出来的文句太生疏了,即使侯 Sir 在最近 一本翻译书已经把大部分的原文名词保留,但我认为还是有一些 语句翻的太难懂它的意思了.也许我的中文造诣太差了吧 delete 侯捷回覆: 我同意,有些英文句子再怎麽修润,也不好看。我认为这是 原作者本身的思考方式与写作

14、技巧的问题。举个例子,最近我 检阅C+ Primer 中文版 ,看到 p.107 最後一段,觉得 思路打结。此段前後文主要是说,如欲将一个 object 当做 某个 reference 的初值,而两者型别不同(但可转换) ,那麽 这个 reference 必须是个 const reference 才行: double dval = 3.14159; const int &ri = dval; / legal for const reference only! 书中花了一些篇幅讲编译器内部动作,以解释为什麽只有 const reference 才合法。p.107 最後一段说: - quote(p

15、.107)- const references 并不会出现这样的问题,因为它们是唯读的。 所以,(1) 不允许 non-const references 代表那些需要暂时 替代品之 objects 或数值,或是 (2) 允许 reference 被定义 但却无法有效运作,哪一种作法比较好?当然前者才是好的解决方案。 - unquote - 看到这里,真的脑筋有点打结,因为作者把文字用得太复杂了。 於是我在手上这本书另外写一段话,清楚而漂亮(我自认为) 地解释必须是 const reference的原由。 可是我不能把我的这段文字取代原作者那段我认为过於复杂的说明。 那样一来我这个译者就太富侵略性了 :) 所以我同意 wenij 说有些语句翻得太难懂它的意思了 , 不过我认为(以此例而言)无关读者的中文造诣或译者的 中文造诣,是原作者的思路与文字表达问题。 - the end C+ Primer 答客问 (5) 1999.10.11 dyliu wrote (1999/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号