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

Dev*_*wal 4 c++ virtual abstract

一个纯虚函数不应该有一个正文,但我只是注意到编译器接受以下代码:

class foo
{
    virtual void dummy() = 0
    {
        cout << "hello";
    }
};
Run Code Online (Sandbox Code Playgroud)

那么,为什么允许纯虚函数拥有一个体?而且,即使函数有一个body,该类仍然无法实例化,为什么呢?

650*_*502 5

纯虚函数可以有一个正文,但是你将它们声明为纯虚拟的事实正好就是说需要派生的实现.

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

无法使用尚未覆盖的纯虚方法实例化类纯虚拟声明的要点.换句话说,声明一个纯虚方法的想法是确保程序员不会忘记提供它的实现.