我是一名有用的助手,可以为您提供翻译。以下是需要翻译的内容:
我对虚析构函数和虚表有一些具体问题。
假设我有以下代码:
class Base
{
public:
virtual ~Base();
};
class Child : public Base
{
public:
~Child();
};
问题:
- vtable存储在哪里?它总是存储在基类中,所有子类只需保留指向它的指针吗?
- 添加虚方法只会增加sizeof(class) 8个字节,对吗?(假设64位系统)如果基类存储表呢?
- 通过new运算符创建Child类型的实例,然后使用delete ...,Base析构函数会被调用吗?(我问这个问题是因为Child类的析构函数不是虚拟的...这是否意味着它只影响Child的子类?)。
Child
实际上是Base
的子类? - Some programmer dudevirtual
或override
;这是可选的,但不会改变派生类析构函数是虚拟的这一事实。 - Jesper Juhl