gpt4 book ai didi

c++ - 删除继承类型

转载 作者:行者123 更新时间:2023-11-28 08:18:55 25 4
gpt4 key购买 nike

我有 2 个类:

class A
{
public:
char * x;
char * y;
char * z;
A();
~A();
}

class B: public A
{
public:
char * o;
B();
~B();
}

我想在类 B 的析构函数中删除 [] x、y 和 z(是的,A 的构造函数确实正确分配了 x、y 和 z)。该代码可以正常编译,但在执行时会崩溃。属性是公开的,所以继承的特征应该可以为我释放一些内存,对吧?

最佳答案

根据你的实际代码,可能不是在o上调用delete,也可能是双删xyz.

您应该在基类(对于基类成员)和派生类(对于派生类成员)中正确实现析构。让涓滴析构函数行为处理基类析构。

http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.12

When I write a derived class's destructor, do I need to explicitly call the destructor for my base class?

  • No... A derived class's destructor (whether or not you explicitly define one) automagically invokes the destructors for base class subobjects

此外,根据代码的使用方式,您可能还需要将析构函数设为虚拟。

http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.7

When should my destructor be virtual?

  • When someone will delete a derived-class object via a base-class pointer.

关于c++ - 删除继承类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674804/

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