《深度探索C++对象模型》勘误表

来源:互联网 发布:淘宝全球购直播入口 编辑:程序博客网 时间:2024/05/02 00:41

《深度探索C++对象模型》(侯捷译),英文原版书名为《Inside the C++ Object Model》,Stanley B.Lippman著。光看作者和译者的名字,就知道这本书非同反响。的确,无论是这本书的原版还是译作,都被读者给予了很高的评价。我,作为一名C++的爱好者,当然是怀着一份无比景仰的心情,仔细阅读完了全书。现在将书中我觉得需要勘误的地方摘出来,与大家共享。

1.第五章“构造、解构、拷贝语意学”,有一处个人觉得翻译有点不妥。

  5.2节最后一段(书219页),书中的翻译是这样的:
  何时需要供应参数给一个base class constructor? 这种情况下在“class的constructor的member initialiazation list中”调用该class的虚拟函数,仍然是安全的吗?不!此时vptr若不是尚未被设定好,就是被设定指向错误的class,更进一步地,该函数所存取的任何class's data members一定还没有被初始化。

  其中第一句的原文是这样的:What about when providing an argument for a base class constructor?
  个人以为这里的"What about"应该翻译成“又如何?怎么样”,整个句子应该翻译为“如果我们在提供参数给base class constructor的时候这么做又会怎么样?”其中的“这么做”,意指调用该class的虚拟函数。举例说明:

class Point
{
public:

  Point(float x = 0.0, float y = 0.0);
 
  virtual float GetY() const
  {
    return 1.1;
  }

protected:
  float _x, _y;
};

Point::Point(float x, float y) : _x(x), _y(y)
{
}

class Point3d: public Point
{
public:

  Point3d(float x = 0.0, float y = 0.0, float z = 0.0);

  virtual float GetY() const
  {
    return 2.2;
  }

protected:
  float _z;
};

Point3d::Point3d(float x, float y, float z) : Point(x, GetY()), _z(z)
{
}

其中Point3d调用该class的虚拟函数GetY(),并将返回值用作参数来调用Point的构造函数,是不安全的。

2.第263页第二段有这样的程序段
for ( int ix = 0; ix < elem_count; ++ix )
{
   Point *p = &((Point3d*)ptr)[ ix ];
   delete p;
}
译者认为循环体内的Point *p应改为Point3d *p,其实这里的p已经指向单个对象,无论是通过基类指针还是派生类指针来调用delete,都不会存在问题。

当然啦,侯捷的水平是勿庸置疑的,尽管原著中存在这样那样的错误,他还是悉心的一一更正。那些翻译上的不准确和将对的改成错的情况,都是少数。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 激素停后全身疼怎么办 运动完头晕想吐怎么办 跑了步全身酸痛怎么办 运动后全身没力气怎么办 学完游泳不会换气怎么办 猫不吃饭精神不好怎么办 运动完头晕目眩想吐怎么办 酒后第二天恶心想吐怎么办 剧烈运动后肌肉酸痛怎么办 剧烈运动后吐了怎么办 长跑后头晕想吐怎么办 运动后一直想吐怎么办 跑多了恶心想吐怎么办 剧烈运动恶心想吐怎么办 长跑之后 恶心想吐怎么办 喝咖啡后绞心痛怎么办 牛奶喝多了胃胀怎么办 运动后大量出汗头晕怎么办 屁股出汗淹的特别痛怎么办 运动完感觉很累怎么办 跑步后感觉很累怎么办 输液多了伤脾胃怎么办 运动完后特别晕怎么办 运动过量大腿肌肉酸痛怎么办 13岁发烧38.2度怎么办 头晕恶心想吐四肢无力怎么办 烧退了浑身疼怎么办 下午睡久了头疼怎么办 一天睡久了头疼怎么办 在家躺久了头疼怎么办 4周多儿童睡眠差怎么办 6岁儿童睡眠差怎么办 四年级的孩子不会写作文怎么办 四年级的孩子写不出作文怎么办? 欠了三万网贷怎么办 打完篮球浑身疼怎么办 在部队当兵意外死亡了怎么办 派派没有体力瓶怎么办 e记账登录不上怎么办 洁净净化区湿度高怎么办 政府测量土地少算了面积怎么办