C++虚拟析构函数

3 c++ virtual-destructor

在创建原型类时,我将析构函数设置为:

virtual ~MyClass();
Run Code Online (Sandbox Code Playgroud)

在库中完成课程时,我注意到我无法添加"虚拟".这是正常的,是虚拟的还是我做错了什么?

例如; 当我尝试这样做时,我得到一个编译器错误:

virtual MyClass::~MyClass() { }
Run Code Online (Sandbox Code Playgroud)

相反,这样做有效:

MyClass::~MyClass() { }
Run Code Online (Sandbox Code Playgroud)

我的问题是,因为我不必virtual在最终代码中包含析构函数的编写,析构函数是否仍然表现为虚拟析构函数(因为它是虚拟的原型)?

Jam*_*lis 15

virtual关键字仅用作类定义中的成员函数声明的一部分.

如果在类定义之外定义成员函数,virtual则不会将关键字放在那里.