gpt4 book ai didi

c++ - 通过删除基类来破坏派生类

转载 作者:行者123 更新时间:2023-11-30 02:11:32 24 4
gpt4 key购买 nike

我的情况类似于以下代码:

#include <iostream>

class A
{
public:
A() { std::cout << "A created!" << std::endl; }
~A() { std::cout << "A destroyed!" << std::endl; }

virtual const char* Name() { return "A"; }
};

class B : public A
{
public:
B() { std::cout << "B created!" << std::endl; }
~B() { std::cout << "B destroyed!" << std::endl; }

const char* Name() { return "B"; }
};

int main()
{
A* a = new B();

std::cout << a->Name() << "\n";

delete a;

return 0;
}

我希望 B 在 A 被销毁时也被销毁。这在它的析构函数中是否可行,或者我是否必须实现虚拟 Destroy() 方法或类似方法?

最佳答案

根据经验,如果您的任何方法是虚拟的,则析构函数也必须是虚拟的。如果不是,则变量的声明类型决定调用哪个析构函数,这几乎不是您想要的。 99.9% 的情况下,您需要运行时类型的析构函数。

关于c++ - 通过删除基类来破坏派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378442/

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