c++ - 实现纯虚函数的必要性是什么

标签 c++ class virtual-functions

纯虚函数是抽象基类的必备属性。所以不应该做任何实现,这是非常直观的理解。但是最近我开始知道纯虚函数仍然可以在以后定义并静态调用(而不是通过对象实例)。我想不出一个理由。如果一个虚函数被定义为纯虚函数,那么实现它的原因是什么?

class A{
public:
    ...
    virtual void interface() = 0; //Pure Virtual functions
    ...
}

void A::interface() //Implementation
{
    cout<<"This the implementation for A interface";
}

我很好奇这背后的逻辑。为什么c++要这样设计?

最佳答案

拥有一个“默认”实现可能是有意义的,如果具体类对它们有用,则可以使用这些实现。他们仍然需要覆盖它,但可以非虚拟地调用基类版本:

struct B : A {
    void interface() {
        A::interface(); // call the default implementation
        // and maybe do some B-specific things too
    }
};

关于c++ - 实现纯虚函数的必要性是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20380585/

相关文章:

c++ - 不需要实例的类

c++ - 如何以编程方式在 Qt 中获取网络管理器设备名称?

python - Django - 将 css 类添加到管理中的输入字段

c++ - 虚函数和绕行

c++ - 使用多态基类(包含虚函数)访问时数组元素的类型

c++ - 只有条件为 1 的程序不进入 while 循环

c++ - C++中的算术与逻辑移位运算

Python对象交互

javascript - 需要的javascript代码解释

c++ - 虚拟接口(interface)和封装