c++ - 在抽象类中实现纯虚函数——有什么用吗?

标签 c++ abstract-class virtual-functions

<分区>

我刚刚注意到我可以在抽象类本身中实现纯虚函数。 GCC 没有提示。这样的实现有什么用吗?任何人都可以使用它吗?

class AbstractClass
{
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    cout << "I am inside pure virtual function of DerivedClass" << endl;
}

最佳答案

您可以使用它来提供派生类可以访问的默认实现。

一种可能的用法是“亲爱的派生类作者,这个虚函数非常重要,我想确保你知道你在用它做什么。我将提供一个默认实现,但您必须明确地使用它。”这将像这样完成:

class AbstractClass
{
public:
    virtual void PureVirtualFunction() = 0;
};

void AbstractClass::PureVirtualFunction() //Is there any use of this implementation?
{
    cout << "I am inside pure virtual function of AbstractClass" << endl;
}

class DerivedClass : public AbstractClass
{
    public:
        void PureVirtualFunction();
};

void DerivedClass::PureVirtualFunction()
{
    AbstractClass::PureVirtualFunction();
}

关于c++ - 在抽象类中实现纯虚函数——有什么用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25530108/

相关文章:

c++ - 如何为 Viewer 和 QScrollArea 添加垂直分隔符?

java - 类中的构造函数不能应用于给定类型 - 抽象类

c# - 简单基类和抽象类有什么区别?

c# - 如何定义继承泛型抽象类的泛型抽象类?

c++ - 如何使用来自不同继承层次级别的多个虚函数指针作为模板参数?

c++ - 如何在基类中创建同名的两个函数?

c++ - Tesseract OCR 高级使用

c++ - 这个 SFINAE 模式有名字吗?

c++ - 基类函数不调用派生类函数

c++ - 保证复制清除如何工作?