带有默认关键字的纯虚拟析构函数

Pure Virtual Destructor with Default Keyword

是否可以将析构函数声明为纯虚拟并使用 default 关键字?例如,我似乎无法编写这样的代码:

class MyClass
{
public:
  // Is there a way to combine pure virtual and default?
  virtual ~ MyClass() = 0,default;
};

当然可以稍后做:

MyClass::~ MyClass() = default;

此外,如果析构函数不是纯虚拟的,则 default 关键字在声明后确实有效。

这个问题不太可能,因为无论如何 you can only have one destructor。为什么需要添加 default 说明符?

没有

您必须编写一个单独的定义,然后 default 在那里,如您所示。

存在 纯说明符 会排除在同一位置存在定义,即使该定义只是 = default.

不,不可能。

通过使用 = default 说明符声明成员函数,您提供了一个函数定义。

来自C++14标准(N3936)的工作草案:

§ 10.4 Note: A function declaration cannot provide both a pure-specifier and a definition

https://github.com/cplusplus/draft/raw/b7b8ed08ba4c111ad03e13e8524a1b746cb74ec6/papers/N3936.pdf