似乎是一个简单的问题,但我很怀疑。当我使用运算符 {{1}创建的非空列表调用delete
时,运算符Object
是否会销毁所有 delete list
元素}?当然会,但我需要确认。如您所见new
有构造函数,但没有经销商。
代码:
Object
答案 0 :(得分:6)
std::list
析构函数将运行,它的元素的析构函数也将运行。也就是说,为什么要动态分配容器呢?你让容器无法为你管理内存。让它发挥作用;使用自动存储持续时间分配列表。
顺便说一下,Object
有一个析构函数,编译器会为你生成一个空的析构函数。虽然没有什么可以清理的,所以它什么都不做。此外,从类设计中可以清楚地看出Object
的实例不拥有它在构造函数中所使用的指针,因此除非您明显更改设计,否则请务必取消分配它。