是否可以将析构函数声明为纯虚拟并使用default关键字?例如,我似乎无法使代码像这样工作:
class MyClass
{
public:
// Is there a way to combine pure virtual and default?
virtual ~ MyClass() = 0,default;
};
当然可以稍后做:
MyClass::~ MyClass() = default;
此外,如果析构函数不是纯虚拟的,则默认关键字在声明后面会起作用。
答案 0 :(得分:7)
否强>
你必须在那里写一个单独的定义和default
,如你所示。
纯指定符的存在排除了在同一位置存在定义,即使该定义只是= default
。
答案 1 :(得分:2)
不,这是不可能的。
通过使用= default
说明符声明成员函数,您将提供函数定义。
从C ++ 14标准的工作草案(N3936):
§10.4注意:函数声明不能同时提供纯指定符和定义
https://github.com/cplusplus/draft/raw/b7b8ed08ba4c111ad03e13e8524a1b746cb74ec6/papers/N3936.pdf
答案 2 :(得分:-4)
这个问题有点像非首发,无论如何you can only have one destructor。为什么需要添加default
说明符?