ere*_*eOn 26 c++ inheritance virtual-destructor
之前可能已经问过这个问题,但是我无法找到类似的问题.
考虑以下类层次结构:
class BritneySpears
{
public:
virtual ~BritneySpears();
};
class Daughter1 : public BritneySpears
{
public:
virtual ~Daughter1(); // Virtual specifier
};
class Daughter2 : public BritneySpears
{
public:
~Daughter2(); // No virtual specifier
};
Run Code Online (Sandbox Code Playgroud)
Daughter1和Daughter2班级有区别吗?
指定/不指定virtual子类析构函数/方法会产生什么后果?
谢谢.
Jar*_*Par 33
不,你在技术上不需要指定virtual.如果基本方法是虚拟的,那么C++将自动生成匹配的覆盖方法virtual.
但是你应该标记它们virtual.virtual毕竟,该方法使得您的代码更清晰,更容易被其他开发人员遵循.
无论您是否在子类中指定虚拟,都会自动在派生的方法覆盖中选择虚拟.
主要结果是,如果没有在子节点中指定virtual,则很难从子类定义中看到该方法实际上是虚拟的.出于这个原因,我总是在父类和子类中指定virtual.
| 归档时间: |
|
| 查看次数: |
4686 次 |
| 最近记录: |