《深度探索C++对象模型》存疑

原创 2007年09月24日 22:28:00
《深度探索C++对象模型》是Standley B.Lippman大师的大作,中文版是侯捷老师翻译的,在译作中侯老师的质量是没得说。三年前对想拜读此书,由于种种原因未能如愿。最近在胡乱看完几本英文书籍之后(英文不好,看着太累)终于决定看几本中文书籍放松一下。
        比起英文版的书,看中文版的书真是惬意啊。之前有比较长时间的C++的经验,所以书前几章看着非常轻松,基本上都是已经知道的东西,不过看了一遍还是有收获的,最起码帮助我把这块的知识系统化。
        嗯,目前才看到第五章,根据侯老师的看法,后面可能并不轻松。到目前为止,有两个地方让我有点疑惑,本着“好读书,不求甚解”的想法,只罗列如下:
(1)P67,关于Named Return Value(NRV)。书中说到“这个程序的第一个版本不能实施NRV优化,因为test class 缺少一个copy constructor”;后面又提到“这个copy constructor的出现激活了C++编译器的NRV优化。” 从书中得知是copy constructor激活了NRV,但事实却是:没有激活了NRV的情况下,调用了copy constructor, 激活了反而不会调用copy constructor,费解!
        我也在网络上搜索了一下,没有找到十二分满意的答复,我自己的理解是:定义一个copy constructor是对编译器的一个暗示,暗示可以激活NRV,但具体优化操作高度依赖编译器。
(2)P195,关于“虚拟规格中const的存在”。“不把函数声明为const,意味着该函数不能获得一个const reference或const pointer”,不解。
        翻看了Standley B.Lippman老人家的另一本经典,《C++ Primer》(潘爱民老师翻译)的P518,关于const成员函数的论述如下:“只有被声明为const的成员函数才能被一个const类对象调用。关键字const 被放在成员函数的参数表和函数体之间。对于在类体之外定义的const成员函数,我们必须在它的定义和声明中同时指定关键字const。”,这个论述不能解释《深》里的那句话,于是找到英文原版,描述如下:“Not declaring a function const means the function cannot be called by a const reference or const pointer argument at least not without resorting to a casting away of the const.”,哈哈,意思很明显了,看来是侯捷老师的误译。

相关文章推荐

深度探索C++对象模型

  • 2013年08月14日 13:58
  • 9.07MB
  • 下载

深度探索c++对象模型

  • 2013年10月16日 12:24
  • 10.86MB
  • 下载

《深度探索C++对象模型》系列之(一)

最近在看《深度探索C++对象模型》,不得不说这是一本好书,一本难得的好书,对C++的内在进行了详细的说明,让我读起来,一发不可收拾;最后,发自内心的感叹,真的是一本好书,一本学习C++的必读之作。 ...
  • vipygd
  • vipygd
  • 2012年12月15日 00:09
  • 1777

深度探索C++对象模型.doc

  • 2011年07月15日 12:36
  • 116KB
  • 下载

拾遗与填坑《深度探索C++对象模型》3.3节

3章3节 Data Member的存取 背景介绍 本节篇幅较短核心内容讲的就是,如下代码的存取效率问题:...

深度探索c++对象模型(侯捷)part1

  • 2010年05月18日 16:31
  • 3.91MB
  • 下载

深度探索c++对象模型

  • 2009年04月11日 16:02
  • 7.86MB
  • 下载

深度探索C++ 对象模型【第一章2】

1:为了维护与C之间的兼容性,C++保留了关键词struct。那么我们具体要在什么时候来去对class和struct作出用法区分呢?...

深度探索C++对象模型.part6

  • 2007年06月19日 11:28
  • 504KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《深度探索C++对象模型》存疑
举报原因:
原因补充:

(最多只允许输入30个字)