C++中抽象类继承另一个抽象类

3

我有一个类,其中声明了一个纯虚函数,就像这样:

class A : public virtual B
{
public:

   virtual void setOn() = 0;

   virtual void setOff() = 0;
};

现在,B类也是抽象类:
class B
{
public:

   virtual const ElementId& getElementId() const = 0;

   virtual const std::string& getName() const = 0;

   virtual ~B();

};

我的问题是,由于类B中的纯虚拟方法没有提供实现,因此类A如何有效?


这是一个抽象类,你不能创建它的实例 - 那么为什么需要实现其他虚函数呢? - UnholySheep
我不知道,但是我正在使用的代码库具有这种结构,所以我只是好奇它是如何实现的。 - Wballer3
2
A 继承 B 的纯虚函数并且它们在 A 中变成了纯虚函数,这使得 A 成为抽象类,无论它自己提供了多少个纯虚函数。 - DeiDei
如果每个纯虚函数在继承一个级别时都必须立即实现,那么设计类层次结构将非常不方便。 - StoryTeller - Unslander Monica
1个回答

13

继承自抽象类的类不必实现纯虚方法。不这样做会使其成为一个抽象类,意味着在此情况下,A也是一个抽象类,而不管A中声明了哪些其他纯虚方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接