c++ - 在 C++ 中将主体添加到纯虚拟/抽象函数?

标签 c++ virtual abstract

纯虚函数不应该有主体,但我只是注意到编译器接受了以下代码:

class foo
{
    virtual void dummy() = 0
    {
        cout << "hello";
    }
};

那么,为什么允许纯虚函数有函数体?另外,即使函数有主体,类仍然无法实例化,这是为什么?

最佳答案

纯虚函数可以有一个函数体,但您将它们声明为纯虚函数的事实恰恰表明派生实现是必需的

您可以从派生方法执行纯虚方法(使用显式 BaseClass::method()),但您仍然必须提供一个实现。

不能用未被覆盖的纯虚方法实例化一个类是纯虚声明的要点。换句话说,将方法声明为纯虚拟的想法是确保程序员不会忘记提供其实现。

关于c++ - 在 C++ 中将主体添加到纯虚拟/抽象函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20160173/

相关文章:

C++虚类方法

java - 如何在 Eclipse 中找到抽象方法的实现位置?

java - 扩展通用抽象类 : Correct Bounding

c++ - 非常奇怪的卡在 for 循环初始化

c++ - OpenGL 两个统一的 sampler2D 具有相同的图像

c++ - 覆盖 Direct3D 接口(interface)?

windows - 如何创建虚拟游戏 handle ?

c++ - 我是否在 WinApi 中正确执行动画?

c++ - 在服务器上执行守护进程

C++ 抽象类 - 添加所需的数据成员,还是只定义对其进行操作的方法?