C ++虚拟析构函数

时间:2010-06-14 16:15:56

标签: c++ virtual-destructor

创建原型类时,我按照这样的方式布置了析构函数:

virtual ~MyClass();

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

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

virtual MyClass::~MyClass() { }

相反,这样做有效:

MyClass::~MyClass() { }

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

2 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:4)

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