如果一个类有一个非纯粹的析构函数,它仍然可以是纯抽象的吗?

Bap*_*ton 2 c++ class abstract pure-virtual

我正在进行一项练习,要求我拿一个基类Rodent并使它成为一个纯粹的抽象类.我对纯抽象类的理解是它充当接口并且只包含纯虚函数.虽然这是一个简单的练习,但我对本书提供的解决方案有疑问:

class Rodent
{
    public:

    virtual ~Rodent() {cout << "Destroy rodent" << endl;}
    virtual void run() = 0;
    virtual void squeak() = 0;
};
Run Code Online (Sandbox Code Playgroud)

如您所见,作者为析构函数添加了一个虚拟定义.添加这个定义是否意味着这不是一个抽象类而不是一个"纯粹的"抽象类?

Alo*_*ave 6

Abstract类必须包含至少一个纯虚函数.

你的类已经有两个纯虚函数run()squeak(),那么你的类是因为这两个纯虚函数摘要.

您无法创建此类的任何对象.

编辑:

纯抽象类是一个专门具有纯虚函数(没有数据)的类.由于您的析构函数不是纯虚拟的,因此您的类不是纯抽象类.