gpt4 book ai didi

c++ - 抽象类对象和纯虚析构函数

转载 作者:行者123 更新时间:2023-11-30 02:21:21 24 4
gpt4 key购买 nike

我们不能创建抽象类的对象,那么为什么抽象类需要析构呢?抽象类的 destruct 有必要做纯虚的吗?

class Base()  
{
public:
virtual ~Base() = 0;
};
Base :: ~Base()
{
}
class Derived :: public Base
{
public:
~Derived();
};

最佳答案

We cannot make the object of the abstract class

这意味着抽象类不能被自己实例化。这并不意味着抽象类的对象不能作为派生对象的一部分实例化,但是:任何派生类的实例也是其抽象基类的实例。

这就是析构函数发挥作用的地方:如果您需要一个来释放在抽象类的构造函数中分配的私有(private)资源,那么唯一可以进行清理的地方就是它的析构函数。

Is it necessary to make the destruct pure virtual for an abstract class?

没有必要将析构函数标记为纯虚函数。只有当您没有定义其他可以标记为纯虚拟的函数时,您才可以这样做。无论如何,您必须为析构函数提供一个实现,即使您将其标记为纯虚拟。

关于c++ - 抽象类对象和纯虚析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48420914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com