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