我有一个具有std :: list作为成员变量的类。我也有这些类的载体。如果我从向量中删除元素,是否将在已删除实例上调用类析构函数?我是否必须在析构函数中使用list :: clear()明确清除列表?
class my_class {
string class_name;
list<int> my_list;
public:
my_class();
~my_class(); // destructor
};
vector<my_class> my_vec;
my_class obj1, obj2, obj3;
my_vec.push_back(obj1);
my_vec.push_back(obj2);
my_vec.push_back(obj3);
my_vec.erase(my_vec.begin()+2); //Is this sufficient?
std::vector
遵循RAII原则,该原则可确保调用对象的析构函数,并在对象超出范围后将其从内存中删除。
具体针对您的问题:
如果我从向量中删除元素,是否将在已删除实例上调用类析构函数?是的
我是否必须在析构函数中使用list :: clear()明确清除列表?不
注意: RAII对指针不做任何事情。因此,它不会取消引用指针,也不会在已取消引用的对象上调用析构函数,也不会从内存中删除已取消引用的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句