为抽象类中的纯虚方法提供实现

时间:2014-10-22 16:19:30

标签: c++ abstract-class

为声明为纯虚拟的方法提供实现的效果是什么。它是否使Base类非抽象? Derived类是否仍然需要提供实现?

class Base
{
public:
    Base();
    ~Base();

    virtual void abstractMethod() = 0;

private:
    uint32_t data;
};

class Derived : public Base
{
public:
    Derived();
    ~Derived();
};

void Base::abstractMethod() { data = 1; }

1 个答案:

答案 0 :(得分:4)

实现纯虚函数不会改变规则。函数仍然是纯粹的,类仍然是抽象的,派生类仍然必须用非纯函数覆盖它,必须实现它。

如果纯函数有实现,则可以非虚拟地调用它:

object.Base::abstractMethod();

如果有一些派生类可能想要使用的通用实现(或部分实现),这可能很有用;他们可以简单地实现他们的覆盖来调用该实现。