已采納回答 / yiyoo
用virtual虛析構函數是為了防止內存泄漏。具體地說,如果派生類中申請了內存空間,并在其析構函數中對這些內存空間進行釋放。假設基類中采用的是非虛析構函數,當刪除基類指針指向的派生類對象時就不會觸發動態綁定,因而只會調用基類的析構函數,而不會調用派生類的析構函數。那么在這種情況下,派生類中申請的空間就得不到釋放從而產生內存泄漏。所以,為了防止這種情況的發生,C++中基類的析構函數應采用virtual虛析構函數。
2018-11-04
注意,調用tesst1時創建的臨時Person對象,該對象的構造函數是拷貝構造函數,因為沒寫拷貝構造函數,系統生成默認的拷貝構造函數,所以沒有輸出,可以自己試著寫拷貝構造函數,最后按任意鍵繼續后還有p和s的析構函數會輸出
2018-10-30
public,無限制,誰都可以訪問,protected是為了不讓用戶訪問,比如在main函數里調用person.m_iAge,但是子類可以訪問,private這樣記吧,自己不讓別人看的小電影,哪怕是子類也不行,最后,類的成員函數應該可以訪問類的所有成員,無限制的,不然定義私有成員干嘛呢?理解好了就很好記
2018-10-29
最贊回答 / AMLXS
記住一句話,屬性私有化,行為(函數)公開化如果基類中的屬性使用protected修飾的話那么子類就可以使用函數訪問并修改如果基類中的屬性使用private 修飾話,那么子類就無法使用函數訪問和修改,包括構造函數.
2018-10-14
test1的完整打印內容如下:
Person()
Person()
Soldier()
Person -- play()
Jim
~Person()
Person -- play()
James
~Person()
請按任意鍵繼續. . .
~Soldier()
~Person()
~Person()
請按任意鍵繼續. . .
Person()
Person()
Soldier()
Person -- play()
Jim
~Person()
Person -- play()
James
~Person()
請按任意鍵繼續. . .
~Soldier()
~Person()
~Person()
請按任意鍵繼續. . .
2018-10-06