3

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

virtual ~MyClass();

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

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

virtual MyClass::~MyClass() { }

相反,这样做有效:

MyClass::~MyClass() { }

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

4

2 回答 2

16

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

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

于 2010-06-14T16:17:08.970 回答
4

virtual 关键字只能用于类声明中的函数声明(通常在头文件中),而不能用于源文件中的定义。这适用于所有函数,而不仅仅是析构函数。

于 2010-06-14T16:17:31.120 回答