2011-06-02 110 views
3

問題:創建指向類對象的指針數組

創建一個至少包含四個指向Reader對象指針的數組。使用New運算符至少創建四個指向派生類對象的指針並將它們分配給數組。

我不確定如果我做對了或沒有。

閱讀器是基類。約翰,大衛,丹尼爾,馬克是派生類

int main(void) 
{ 
    Reader *obj[4]; 

    obj[0] = new John(); 
    obj[1] = new David(); 
    obj[3] = new Daniel(); 
    obj[2] = new Mark(); 

} 

這是對的嗎?

+0

對我來說看起來還行。儘管將'return 0;'加到最後。 – trojanfoe 2011-06-02 08:36:05

+1

你有內存泄漏 - 你必須稍後「刪除」它們。 – sharptooth 2011-06-02 08:36:24

+0

使用std :: vector代替 – 2011-06-02 08:37:26

回答

5

您的代碼是正確

而作爲@sharptooth建議,在分配的obj[] s上練習delete。在C++ new分配內存和delete釋放。

+0

在這種情況下,需要'delete [] obj'來正確地銷燬和刪除數組中的所有對象及其指針 – eFloh 2014-01-30 10:44:12

+1

@eFloh delete [] obj是一個可怕的想法。這是錯誤的。 'obj'是一個局部變量。它沒有被分配,所以你不能刪除它。當它超出範圍時它將被銷燬。這種破壞不會做什麼,因爲指針沒有析構函數。 但是,obj [0-3]包含指向已分配對象的指針。這些必須用「delete obj [0];」等等來刪除。 請注意,由於這是不完整的代碼,我們無法判斷它是否正確。 Reader是否有虛擬析構函數? – 2014-05-21 22:36:01

+0

對不起,跳過了@sharptooth提案而沒有注意到這一點。我主要關注數組應該使用new []分配並使用delete的數組變體銷燬的事實... – eFloh 2014-05-22 12:32:01