gpt4 book ai didi

C++根据 parent 的指针删除 child

转载 作者:行者123 更新时间:2023-12-02 19:14:27 25 4
gpt4 key购买 nike

假设我有 A 类:

class A {
A();
};

B 类是 A 的子类:

class B : public A {
B() : A();
~B();
};

和一个指针 vector :

std::vector<A*> a_pointers;

现在,我用以下方法初始化所有内容:

B* b_obj = new B();

a_pointers.push_back(b_obj);

如何删除 b_obj 对象?应该是这样的吗?

delete a_pointers[0];

它会起作用吗?如果不是,应该怎么做?

最佳答案

您需要为 A 提供一个虚拟析构函数(请参阅 here 了解原因):

class A {
A();
public:
virtual ~A() = default;
};

此时调用delete a_pointers[0] 将完全破坏b_obj

关于C++根据 parent 的指针删除 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63867637/

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