当对象 a
被销毁时,personsInHouse
映射是否也被销毁,或者我需要在析构函数中销毁它?如果不这样做会造成内存泄漏吗?
class A {
public:
map<unsigned int, unsigned int> personsInHouse;
};
int main(){
A a;
A.hash[10] = 23;
};
最佳答案
personsInHouse
的生命周期是自动,因为您按值 存储它,并且它的生命周期是父对象的生命周期。因为你创造了a
按值,当它超出作用域时调用它的析构函数,一个对象的析构函数自动调用它包含的对象的析构函数。所以你不需要销毁personsInHouse
,就像你不需要销毁a
.
如果personsInHouse
是一个指针,你创建了一个map<unsigned int, unsigned int>
在动态存储中 new
并将指向它的指针存储在 personsInHouse
中,那么您需要手动释放 personsInHouse
的内存在 A
的析构函数中指向通过delete
.但您发布的代码并非如此。
您所做的是实现它的好方法:更喜欢按值存储您可以存储的每个对象,这样您就不必担心动态对象的生命周期管理。
关于c++ - 当类被销毁时,在类中声明的 map 容器是否被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350296/