【发布时间】:2020-07-06 18:31:52
【问题描述】:
虚和纯虚析构函数在C++中的应用是什么?在什么情况下我必须使用虚拟析构函数而不是普通析构函数?
【问题讨论】:
-
如果你有一个多态继承层次结构,你或多或少需要使用虚拟析构函数,否则当不调用正确的构造函数时可能会出现混乱。几乎任何体面的教科书、教程或课程都应该提出这一点。
标签: c++ oop constructor virtual destructor
虚和纯虚析构函数在C++中的应用是什么?在什么情况下我必须使用虚拟析构函数而不是普通析构函数?
【问题讨论】:
标签: c++ oop constructor virtual destructor
当一个基类对象的指针被删除时,编译器会根据指针所指的对象的实际类型调用相应的析构函数。
如果基类析构函数不是虚函数,当基类指向派生类对象的指针被删除时编译器会自动调用基类的析构函数,而不考虑实际对象是否是基类的对象类。这可能导致内存泄漏。
【讨论】: