【发布时间】:2011-08-12 18:14:45
【问题描述】:
如果我有一个基类和一个派生类,并且我在父虚拟中删除了析构函数,但实例化了一个子类类型的对象,那么在销毁时它会调用父析构函数吗(因为是虚拟的)?如果我还在派生类中声明了一个析构函数,它会同时调用两个析构函数(基类和派生类)。在此先感谢:-)。
我的问题的第二部分是关于第一部分。为什么基类析构函数需要声明为virtual。不要构造函数在层次结构中循环。他们不共享相同的名字,那么哪里需要它?它不应该对析构函数起作用吗,或者默认情况下只有一个被调用?另外通过后期绑定是否能够检测到所有的类和对象是由什么组成的?
编辑:我的问题不仅仅是关于虚拟析构函数,而是为什么它需要被声明为虚拟的,因为它们都应该被默认调用。
【问题讨论】:
-
嗯,您的第 1 段回答了第 2 段。这在任何体面的 C++ 语言书籍中都有介绍。以及右侧相关部分中的问题。
-
@Hans,我有一本书,但根本没有。
-
试试这个链接stackoverflow.com/questions/461203/…这可能会有所帮助。谢谢