2012-12-18 126 views
0

考慮下面的代碼:在刪除時調用構造函數?

PFArrayD *p = new PFArrayDBak; 
... 
delete p; 

假設PFArrayDBak是派生類基類PFArrayD的。

「如果基類PFArrayD析構函數被標記虛擬,然後刪除時被施加到P,爲類PFArrayDBak構造將被調用(因爲指向的對象的類型是PFArrayDBak的)」。

爲什麼PFArrayDBak類的構造函數只有在刪除應用於p時纔會調用?當內存分配到堆上時,是不是在第一行調用構造函數?

評論指出,這是一個錯字,應該說析構函數NOT構造函數。

+8

你在引用什麼? –

+8

好像是我的錯字。它應該陳述「[..]類的析構函數[..]」。你的來源是什麼? – ypnos

+1

看起來像是來自CSIEB0040「計算機程序設計II導論」2012年春季的講義,其中包含相同的錯字。 – PeterJ

回答

2

ypnos寫道:「看起來像是我的錯字,它應該陳述'[..]類[..]的析構函數',你的來源是什麼?

+0

創建社區維基答案,讓OP有一些東西可以接受。 –

+0

啊你怎麼做,更重要的是你什麼時候這樣做 –

+0

在輸入框下面和上面的預覽框應該是一個選中標記爲「社區wiki」。當我認爲需要回答一個問題時,我會使用它,但我不應該因此得到答案。另見:http://stackoverflow.com/privileges/community-wiki –

相關問題