对c++ primer plus里面对“继承和动态内存分配”的疑问

C++语言 码拜 10年前 (2015-05-11) 1045次浏览 0个评论

《C++ Primer Plus》516页的“继承和动态内存分配”一小节里面有一段:
      “如果在派生类中没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数,实际上,派生类的默认构造函数总要进行一些操作:执行自身的代码后调用基类析构函数
对这一句不是很明白,没有显示定义析构函数和自动定义默认构造有什么关联么?派生类的默认构造函数要进行的操作不是先执行基类的构造函数,然后再执行的自身的代码么?

10分
书上写错了吧
引用 1 楼 ApplePeels 的回复:

书上写错了吧

如果是错的那这错的有点离谱了吧,但是书上的确是这么写的

10分
这明显是错误了嘛,看书也是要带着质疑的态度去看的,这书上的错误我都自己标注出来
派生类的默认构造函数总要进行一些操作:执行自身的代码后调用基类析构函数
应该是印刷错误吧,说的是默认的析构函数执行完后还要调用基类的析构函数,比如子类的构造函数执行覆盖父类虚函数的功能,子类的构造函数需要把父类的虚函数还原(未测试)
引用 3 楼 jay202 的回复:

这明显是错误了嘛,看书也是要带着质疑的态度去看的,这书上的错误我都自己标注出来

第五版和最新的第六版都是一样的,这样也太不应该了吧?

找到了,应该是翻译错误或者印刷错误,原版如下:
  “First, consider the need for a destructor.If you don’t define one, the compiler defines a
default destructor that does nothing.Actually, the default destructor for a derived class
always does something; it calls the base-class destructor after executing its own code”
引用 6 楼 WawaMax 的回复:

找到了,应该是翻译错误或者印刷错误,原版如下:
  “First, consider the need for a destructor.If you don’t define one, the compiler defines a
default destructor that does nothing.Actually, the default destructor for a derived class
always does something; it calls the base-class destructor after executing its own code”

好给力啊


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明对c++ primer plus里面对“继承和动态内存分配”的疑问
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!