我是否必须在类体外定义纯虚拟析构函数?

tom*_*myk 3 c++ destructor inline pure-virtual

我试过的两个编译器接受这种语法,但我在某处读到纯虚析构函数定义应始终在类之外.我编写的代码:

class AbstractBase
{
public:
    virtual ~AbstractBase() = 0
    {}

    virtual void foo()
    {
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 6

根据标准,您无法在类体内定义纯虚函数.
有些编译器确实支持此功能作为扩展.请注意,使用此扩展程序会使您的代码在不同的编译器中不可移植.

参考:

C++ 03 10.4第2段:

[注意:函数声明不能​​同时提供纯指定符和定义-end note] [示例:

struct C 
{ 
    virtual void f() = 0 { }; // ill-formed 
}; 
Run Code Online (Sandbox Code Playgroud)

- 末端的例子]