为什么我们在c ++中有虚拟析构函数而不是虚构造函数?

时间:2011-10-11 16:52:11

标签: virtual-destructor

为什么我们可以拥有虚拟析构函数而不是虚拟构造函数?

1 个答案:

答案 0 :(得分:1)

构造函数链可以在编译时确定,因为您总是从最特定的类中使用new ClassName()

但是,如果使用多态,则可能会在可能的父类上调用析构函数,因此您无法在编译时知道从哪里开始链。您需要一个虚拟函数来始终调用正确的函数(或者您最终会在最具体的类中使用可能未清理的资源)。