在以下示例中,类 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;
}
为什么派生类也成为抽象类?
答案 0 :(得分:1)
是的,Derived
是一个抽象类。这是因为show
类中有一个纯虚方法Base
,它由Derived
继承但从未解析过。这意味着,为了使Derived
成为具体的类,您必须首先在show
类本身或Base
中实现Derived
方法。
答案 1 :(得分:1)
是。纯虚函数必须在派生类中实现,否则它们仍然是抽象类:C++ Virtual/Pure Virtual Explained