创建原型类时,我按照这样的方式布置了析构函数:
virtual ~MyClass();
在库中完成课程时,我注意到我无法添加“虚拟”。这是正常的,是虚拟的还是我做错了什么?
例如;当我尝试这样做时,我得到一个编译器错误:
virtual MyClass::~MyClass() { }
相反,这样做有效:
MyClass::~MyClass() { }
我的问题是,因为我不必在析构函数的最终代码中包含virtual
,析构函数是否仍然表现为虚拟析构函数(因为它是虚拟的原型)?
答案 0 :(得分:15)
virtual
关键字仅用作类定义中成员函数声明的一部分。
如果在类定义之外定义了成员函数,则virtual
关键字不会放在那里。
答案 1 :(得分:4)
virtual关键字只能用于类声明中的函数声明(通常在头文件中),而不能用在源文件中的定义上。这适用于所有函数,而不仅仅是析构函数。