1 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
問(wèn)題出在 test 函數(shù)中的 delete 上。你不應(yīng)該 delete 的。
delete 一個(gè)指針會(huì)引起指針?biāo)笇?duì)象被析構(gòu),但前提是這個(gè)對(duì)象必須是被 new 出來(lái)的。 這個(gè) test 中的 c 所指的是 main 函數(shù)中的 c,它并不是用 new 構(gòu)造的,不應(yīng)該被 delete!
delete 了不正確的指針會(huì)引起什么后果呢? 不確定!? C++ 標(biāo)準(zhǔn)并沒(méi)有規(guī)定這時(shí)會(huì)發(fā)生什么。在有的平臺(tái)下可能看不出什么影響;有的平臺(tái)下可能會(huì)引起重復(fù)析構(gòu)(你遇到的很像這種)......甚至更嚴(yán)重的(更隱晦的)錯(cuò)誤。 總之,你知道這樣做是錯(cuò)的就好了。
題目中你提到“釋放內(nèi)存”。這里的 c 就是一個(gè)簡(jiǎn)單的局部變量,并不需要額外的操作來(lái)“釋放”它。當(dāng)它結(jié)束生存期時(shí)會(huì)被自動(dòng)釋放。? ?如果這個(gè) c 是被 new 出來(lái)的,才應(yīng)該主動(dòng) delete 掉。
另外,也許是你術(shù)語(yǔ)運(yùn)用得不對(duì)。你這里就是普通的“單繼承”,并不是“多繼承”。多繼承通常指的是子類(lèi)同時(shí)派生自多個(gè)父類(lèi)。
- 1 回答
- 0 關(guān)注
- 1073 瀏覽
添加回答
舉報(bào)