不要覆盖派生类中的纯虚函数

时间:2017-07-19 13:27:43

标签: c++ inheritance virtual

在以下示例中,类 Base 抽象类派生类继承自 Base 类。我没有覆盖派生类中的纯虚函数。 然后,我一直在尝试创建派生类对象,但编译器给出了以下错误。

error: cannot declare variable 'd' to be of abstract type 'Derived'
     Derived d;

此处的代码:

#include<iostream>
using namespace std;

class Base
{
public:
    virtual void show() = 0;
};

class Derived : public Base
{

};

int main(void)
{
    Derived d;
    return 0;
}

为什么派生类也成为抽象类?

2 个答案:

答案 0 :(得分:1)

是的,Derived是一个抽象类。这是因为show类中有一个纯虚方法Base,它由Derived继承但从未解析过。这意味着,为了使Derived成为具体的类,您必须首先在show类本身或Base中实现Derived方法。

答案 1 :(得分:1)

是。纯虚函数必须在派生类中实现,否则它们仍然是抽象类:C++ Virtual/Pure Virtual Explained