我正在写一个模板类,它在内部管理给定类型的数组。就像这样:是否删除[]调用析构函数?
template<typename T>
class Example {
// ...
private:
T* objects; // allocated in c'tor (array), deleted in d'tor
// ...
};
我在想,如果C++调用每个对象的析构函数中objects
,当我通过delete[] objects;
删除。
我需要知道这一点,因为在我的课的对象不包含有意义的值的时候,所以当他们不这样做的析构函数不应该被调用。
此外,我想知道如果我宣布像T objects[100]
这样的固定大小的数组作为Example<T>
的一部分,将会调用析构函数。
“因为我班的对象始终不包含合理的值”这个班听起来很糟糕。 –
该类是一个提前分配内存的集合,它并不总是使用它。我不需要用NULL来填充这个空格,因为这个类已经知道哪些元素正在使用,哪些不是。 – Mixthos
如果'new []'调用构造函数,那么'delete []'调用析构函数是合乎逻辑的。这只是合乎逻辑的。 – dtech