考慮下面的代碼:在刪除時調用構造函數?
PFArrayD *p = new PFArrayDBak;
...
delete p;
假設PFArrayDBak是派生類基類PFArrayD的。
「如果基類PFArrayD析構函數被標記虛擬,然後刪除時被施加到P,爲類PFArrayDBak構造將被調用(因爲指向的對象的類型是PFArrayDBak的)」。
爲什麼PFArrayDBak類的構造函數只有在刪除應用於p時纔會調用?當內存分配到堆上時,是不是在第一行調用構造函數?
評論指出,這是一個錯字,應該說析構函數NOT構造函數。
你在引用什麼? –
好像是我的錯字。它應該陳述「[..]類的析構函數[..]」。你的來源是什麼? – ypnos
看起來像是來自CSIEB0040「計算機程序設計II導論」2012年春季的講義,其中包含相同的錯字。 – PeterJ