Closed. This question needs to be more
focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注
editing this post的一个问题。
2个月前关闭。
Improve this question
class Base
{
public:
virtual ~Base() = 0;
};
Base::~Base() {};
class Derived: public Base
{
public:
~Derived() override
{
std::cout << "Deleting Dynamically allocated Memory" << std::endl;
}
};
我对如何使用纯虚拟析构函数感兴趣。如何使用以及何时使用。
如果希望您的类是抽象的(因此是一种多态类型),并且在使用基类指针删除派生类的实例时表现出自身的行为,那么可以选择使析构函数为纯虚函数。
但是您必须为析构函数提供一个函数体,否则程序链接将失败(无法覆盖析构函数)。实现所有这些的一种特别好的方法是
class Base
{
public:
virtual ~Base() = 0;
};
Base::~Base() = default;
(该语言没有提供一种使析构函数成为纯虚函数并在一条语句中指定默认编译器的方法。)
我是一名优秀的程序员,十分优秀!