我正在寫一個模板類,它在內部管理給定類型的數組。就像這樣:是否刪除[]調用析構函數?
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