我正在编写一个模板类,它内部管理给定类型的数组。就像这样:
template<typename T>
class Example {
// ...
private:
T* objects; // allocated in c'tor (array), deleted in d'tor
// ...
};
当我使用
delete[] objects;
删除对象时,C++是否会调用objects
中每个对象的析构函数?我需要知道这一点,因为我的类中的对象并不总是包含有意义的值,所以当它们不包含有意义的值时,析构函数不应该被调用。
此外,如果我在
Example<T>
中声明了一个固定大小的数组,例如T objects[100]
,我想知道析构函数是否会被调用。
std::vector
代替 - 你可以使用reserve
预先分配内存,然后在需要时向向量中添加对象。 - Sander De Dycker