《深度探索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++对象模型

  • 2016-07-06 11:08
  • 15.93MB
  • 下载

深度探索c++对象模型 小结【转】

Chapter 2 构造函数语义学习小结 1、 C++编译器何时会为C++中的类生成缺省的构造函数(Default constructor)? 如果程序员没有定义构造函数,编译器会在下...

深度探索C++对象模型

  • 2015-11-25 10:09
  • 10.73MB
  • 下载

深度探索c++对象模型

  • 2015-12-30 15:50
  • 15.93MB
  • 下载

《深度探索C++对象模型》读书笔记(2)。

default constructor仅在编译器需要它时,才会被合成出来。    通常来说,由编译器合成出来的default constructor是没啥用的(trivial),但有以下几种例外...

深度探索C++对象模型

  • 2016-11-04 23:17
  • 10.73MB
  • 下载

深度探索C++对象模型

  • 2016-08-02 09:52
  • 7.86MB
  • 下载

深度探索C++对象模型之:成员函数语义学--静态成员函数

深度探索 C++ 对象模型

  • 2015-05-22 17:30
  • 7.91MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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