使用默认关键字的纯虚析构函数

3

能否将析构函数声明为纯虚函数并使用默认关键字?例如,我似乎无法使以下代码正常工作:

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

当然,稍后可以执行以下操作:

MyClass::~ MyClass() = default;

此外,如果析构函数不是纯虚函数,则在声明后使用默认关键字是有效的。

好的,谢谢。标准确实说道:
函数声明不能同时提供纯说明符和定义。
- Christopher Johnson
2
@T.C. 答案在下面,伙计。 ↓ ↓ ↓ ↓ ↓ ↓ - Lightness Races in Orbit
默认一个虚析构函数...为什么?它是虚拟的,所以默认它不会使它变得微不足道,并且对于定义为{}的类,没有任何变化。 - Nikos Athanasiou
3个回答

7

编号。

你需要编写一个独立的定义,并将其设为默认值,正如你所展示的那样。

即使该定义只是一个= default,纯粹的指定符的存在也排除了在同一位置存在定义的可能性。


2

2
N3797远非“最新公开草案”。 - T.C.
@T.C. 我使用了此网址的“最新公开草案”链接:http://www.open-std.org/JTC1/SC22/WG21/。如果您有更近期的草案,请提供一个链接。 - senbrow
1
注释不是规范,但该注释也存在于N4140中。 - Shafik Yaghmour

-4

这不适用于任何可以使用 default 的东西吗? - juanchopanza
3
你忘记了一个纯虚函数可能会有定义。 - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接