筆試裡面考c++基礎遇到了好幾次這種題目。先上**
#include
using namespace std;
class a
~a()
virtual void fun()
};class b :public a
~b()
virtual void fun()
};int main()
問執行之後的結果。若對c++的繼承有所了解,答案應該很快就出來了。我們分析一下:b b:構造乙個類b的物件,因為它是繼承於類a,所以先執行a中的建構函式,然後再執行自己的建構函式;a *a=&b:宣告乙個指向a型別的指標,並指向物件b;此時a->fun()執行的就是類b裡面的fun();最後main將要將要結束,要析構函式。那麼是先析構誰呢?
當然是b,因為b是a的子類,然後才再執行a的析構函式。因為從邏輯裡面分析,構造的時候,要先有父親才有兒子 先a後b,而析構的時候,要反過來,先從小的開始」刪「。
執行結果是:ab
bb~b
~a
C 繼承的執行順序
自己對多型中建構函式 函式過載執行順序和過程一直有些不理解,經過測試,對其中的執行順序有了一定的了解,希望對初學者有些幫助。eg1 public class a public virtual void fun public class b a public void fun class progra...
C 複習(繼承,運算子)
繼承 俺要主攻uc,還要回珠海工作 1.子類繼承父類方式 1.public 2.protected 3.private 通過public繼承下來的,都不變 通過protected繼承下來的,原有父類的public函式,將轉化為protected來繼承。通過private繼承下來的,原有父類的publ...
Java繼承構造執行順序
package test public class father public father package test public class son extends father public son public son int s public static void main string...