C++虚析构函数

3
创建原型类时,我会按以下方式编写析构函数:

virtual ~MyClass();

在完成库中的类时,我注意到我不能添加“virtual”关键字。这是正常的吗?虚函数会被考虑在内吗?还是我做错了什么?
例如,当我尝试这样做时,编译器会报错:
virtual MyClass::~MyClass() { }

不要做这些工作:

MyClass::~MyClass() { }

我的问题是在析构函数的最终代码中不需要包含 virtual,那么析构函数是否仍然像虚析构函数一样运行(因为它作为原型是虚拟的)?


1
C++问题编号0x8000,太棒了! - fredoverflow
2
@Fred:我猜现在人们对C++的问题比以前多了一点?;-) - James McNellis
2个回答

16

virtual关键字只用于类定义内部的成员函数声明中。

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


那非常好地回答了我的问题 :) - anon235370
@DeadMG 在标记答案前必须等待15分钟。 - anon235370
@m00st:哦,我从来没有这么快得到过答案。 - Puppy

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接