我有一个 Base 类,它被认为是只读的,在它的虚拟析构函数中它什么也不做。现在我将该 Base 类派生为一个可写的 Derived 类,并且在它的析构函数中,它删除了 Base 成员:
class Base
{
virtual ~Base() {}
void* Data;
}
class Derive : public virtual Base
{
virtual ~Derive() { delete Data; }
}
忽略上面语法不正确的代码,如果我要将 Derive 实例传递给以 Base 类作为引用的 Function :
void Function(const Base& base)
{
...
}
...
Derive der = Derive();
...
Function(der);
Derived 析构函数会在函数作用域的末尾被调用吗?我在寻找正确的关键字来找到答案时遇到了麻烦,所以如果之前有人问过,我很抱歉。我假设 C++ 处理引用的类型是它们的类型,而不是它们可能的类型,但我可能是错的。