带有默认关键字的纯虚拟析构函数
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
是否可以将析构函数声明为纯虚拟并使用 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