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

标签 c++ abstract-class

为声明为纯虚拟的方法提供实现会产生什么影响。它会使基类成为非抽象类吗?派生类是否仍然需要提供实现?

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

最佳答案

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

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

object.Base::abstractMethod();

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

关于c++ - 为抽象类中的纯虚方法提供实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512219/

相关文章:

c++ - 将方法指针/引用参数标记为 const 真的会显着影响性能吗?

c++ - 如何使用 OpenCV 在 C++ 中快速访问像素值

java - 从抽象类实现比较器

java - 由静态最终类实现的抽象字段?

python - 实现 ABC 子类的正确方法

java - 强制继承类定义某些方法

c++ - C++ 中的重载赋值和圆括号运算符

c++ - 将 STACK_OF(X509) 转换为 ASN1 流

C++ 使用 std::map 计算实例/直方图

java - 抽象类变量和继承