已采納回答 / 小圖兔
個人總結:virtual當前出現的三種地方:虛析構函數:當父類指針指向子類對象時,釋放內存時,若不定義virtual,則僅釋放父類內存。虛繼承:防止多繼承和多重繼承時,一個父類被繼承多次,造成內存空間的浪費。虛函數:當父類指針指向子類對象時,父類指針可以指向子類方法。
2018-06-28
已采納回答 / 慕無忌5762020
或者 你也可以在 派生類中 再寫一個public 下的函數 去調用 protect中的 函數? 這樣做 幾乎沒有任何意義? 本來就是為了調用函數 現在要用另外一個函數 去調用這個函數?
2018-06-26
已采納回答 / 王大貓
fun2(&s2) ?是什么?作者沒這么用啊。fun1(&s1) 里面的&s1是傳入函數的實參,等于是把子類賦值這父類。下面的圖中打叉是因為他把父類對象P1賦值給了子類對象S1
2018-06-24
最贊回答 / iloveyoulcx
main函數里面的 Solider M 拼錯了,應該是Soldier題目要求把Soldier類型的對象命名為soldier(cout 那兩句.前面用了soldier)
2018-06-18
最贊回答 / Jedenn
首先確定如下事實:創建派生類對象時,程序首先調用基類構造函數,然后再調用派生類構造函數。(因此,Soldier soldier; 會先調用Person構造函數,后調用Soldier構造函數)Person p = soldier; 使用的是拷貝初始化,調用拷貝構造函數(不是構造函數),當前情況使用的是默認拷貝構造函數Person p; 屬于默認初始化,調用的是Person構造函數。無論Person p = soldier; 還是 Person p; 生成的對象p,銷毀時都是調用的~Person析構函數。第2...
2018-03-19
最贊回答 / Jedenn
在C++中,內存分成5個區,他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區1. 棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變量的存儲區。里面的變量通常是局部變量、函數參數等。2. 堆,就是那些由new分配的內存塊,他們的釋放編譯器不去管,由我們的應用程序去控制,一般一個new就要對應一個delete。如果程序員沒有釋放掉,那么在程序結束后,操作系統會自動回收。3. 自由存儲區,就是那些由malloc等分配的內存塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。4...
2018-03-18