gpt4 book ai didi

c++ - 插入容器的对象必须在析构函数中清除?

转载 作者:行者123 更新时间:2023-11-28 03:31:19 24 4
gpt4 key购买 nike

假设:

struct Foo
{
int _b;
std::string _name;
};

class Bar
{
public:
vector<Foo>hold;
};

如果未在析构函数上调用 hold.clear(),是否意味着内存泄漏?我说的是对象,而不是指针,因为据我所知,push_back 创建原始对象的拷贝;

最佳答案

当一个对象被销毁时,它的所有成员也被销毁。因此 Bar 的(自动生成的)析构函数将调用其持有成员的析构函数,该成员将调用其元素的析构函数。

总结:一切都会自动销毁。这是 C++ 中的保证:如果您按值操作对象,则可以保证它们在超出范围时将被销毁。您唯一需要显式销毁的是已在堆上分配的对象(即使用 new)。

关于c++ - 插入容器的对象必须在析构函数中清除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12525019/

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