已采納回答 / 慕粉shuangyu
http://blog.csdn.net/starlee/article/details/619827 我在一個博客中看到的答案,覺得挺有道理的,你可以看看
2016-10-19
已采納回答 / qq_一r過_03334883
這個例子是為了給你演示多繼承,實例化子類對象來給父類成員賦值,因為famer類只有m_strName而沒有m_strCode,woker類和它相反,而MigrantWorker類則具有兩個成員,如果只是給MigrantWorker類自己的成員賦值的話,是可以采用你說的普通方法。給父類成員賦值,也可以使用 ?MigrantWorker mk; ?mk.Famer::m_strName="XXXX"的方式,但是顯然初始化列表更加的省事。
2016-10-09
最新回答 / 朵小妖兒
?不會的,因為在4.5節中有說到,只有void test1(Person p)這個對象的會先實例化一個對象p,來調用play,并在執行完之后自動銷毀,這樣就會有一個析構函數,之后的兩個都沒有實例化和銷毀的過程,所以效率高,也不會執行析構函數,但是如果加了虛析構函數,就會把父類和子類的內存一起釋放了
2016-10-09
已采納回答 / Jason_Jay
1.實例化子類的時候會先構造父類對象,而釋放的時候則是先釋放子類,然后再釋放父類。2.編程中凡是有實例化的對象最后都要釋放掉,不然可能會導致內存泄漏。
2016-10-09
已采納回答 / 憂傷的小鞋匠
哪里的ChildrenLabourer?如果是在堆中實例化對象的話,應該是ChildrenLabourer *p = new?ChildrenLabourer;(省略了參數列表),如果是在棧中實例化的話一般是ChildrenLabourer childrenLabourer。
2016-10-05
已采納回答 / 慕數據8895736
最開始的時候執行了Person和Soldier的構造函數,如果不加虛析構函數的話? 你會看到就只釋放了Person的析構函數,這樣就少釋放了Soldier的析構函數,加了的話就會有~Soldier和~Person,一樣各執行了一次,沒有重復釋放ka ,不知這樣理解得對不對。
2016-09-27