【问题标题】:Providing an implementation for a pure virtual method in an abstract class在抽象类中提供纯虚方法的实现
【发布时间】:2014-10-22 16:19:30
【问题描述】:

为声明为纯虚拟的方法提供实现的效果是什么。它是否使 Base 类非抽象?派生类是否还必须提供实现?

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; }

【问题讨论】:

    标签: c++ abstract-class


    【解决方案1】:

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

    如果一个纯函数有一个实现,那么它可以被非虚拟调用:

    object.Base::abstractMethod();
    

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

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 2012-09-04
      • 1970-01-01
      相关资源
      最近更新 更多