gpt4 book ai didi

c++ - 删除 vector 类成员

转载 作者:太空狗 更新时间:2023-10-29 23:27:58 25 4
gpt4 key购买 nike

我有一个类 A,其成员是另一个类 B 的对象指针的 vector

class A
{
std::vector<B*> m_member_A

m_member_A 是通过使用 new 运算符创建 B 的对象

来填充的
B* b1 = new B;
m_member_A.push_back(b1);

在 A 的析构函数中,以下释放所有内容是否正确?

A::~A()
{
for(int i = 0; i < m_member_A.size(); ++i)
{
delete m_member_A[i];
}

m_member_A.clear();
}

最佳答案

这是正确的,只要您根据 Rule of Three 还具有正确的复制构造函数和复制赋值运算符.请注意 clear()是多余的,因为 vector 的析构函数将释放它的内存。

你为什么要弄乱指针和 new ?为什么不遵循零规则,并使用 vector<B> , 或 vector<unique_ptr<B>>如果你需要多态指针?那么您根本不需要担心析构函数、复制构造函数或复制赋值运算符;并且您将获得移动语义作为奖励。

关于c++ - 删除 vector 类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534373/

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