为什么我们会在 C++ 中需要一个纯虚析构函数?


在 C++ 中允许纯虚析构函数不存在任何不良影响。必须为纯虚析构函数提供一个函数体,因为派生类析构函数将在基类析构函数之前调用,所以如果我们不提供函数体,它将在对象析构期间找不到需要调用的任何内容,并且会发生错误。我们可以通过使用带有定义的纯虚析构函数轻松创建一个抽象类。

示例代码

 在线演示

#include <iostream>
using namespace std;

class B {
   public: virtual ~B()=0; // Pure virtual destructor
};

B::~B() {
   cout << "Pure virtual destructor is called";
}

class D : public B {
   public: ~D() {
   cout << "~Derived\n";
   }
};

int main() {
   B *b = new D();
   delete b;
   return 0;
}

输出

~Derived
Pure virtual destructor is called

更新时间: 2019 年 7 月 30 日

752 次浏览

开启你的职业生涯

完成课程以下载证书

开始学习
广告
© . All rights reserved.