虚析构函数
对于基类(或者设计成将被派生的类),析构函数应被声明为虚函数。虚析构函数能够保证派生类被正确析构
class ClassBase
{
public:
~ClassBase() { printOut(”Deconstructor in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
~ClassDerived() { printOut(”Deconstructor in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
delete p;
}
将打印”Deconstructor in Base Class”
class ClassBase
{
public:
virtual ~ClassBase() { printOut(”Deconstructor in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
~ClassDerived() { printOut(”Deconstructor in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
delete p;
}
将打印
”
Deconstructor in Derived Class
Deconstructor in Base Class
“
本文解释了在C++中为何基类的析构函数应当声明为虚函数。通过示例对比,展示了当基类指针指向派生类对象时,使用虚析构函数能确保派生类的资源得到正确释放。
1418

被折叠的 条评论
为什么被折叠?



