gpt4 book ai didi

c++ - 如何正确继承析构函数不是虚拟的基类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:20 25 4
gpt4 key购买 nike

我想继承类A,但是A的析构函数不是虚的,我不能修改A的定义。如何避免以下情况?

struct A
{
A()
: a(new char[8])
{}

~A()
{
delete[] a;
}

char* a;
}

struct B : A
{
B()
: A(), b(new char[8])
{}

~B()
{
delete[] b;
}

char* b;
};

int main()
{
A* p_a = new B;
delete p_a; // How to avoid such a dangerous deletion?
}

最佳答案

如果基类没有虚析构函数并且您不能修改类定义,那您就很不走运了。作为一般经验法则,您可能不应该对没有虚拟析构函数的基类使用公共(public)继承。

也许您可以尝试使用组合而不是继承?将 A 的实例放在 B 中,并提供包装对 A 成员函数的调用的公共(public)成员函数。

关于c++ - 如何正确继承析构函数不是虚拟的基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com