C 簡單的繼承執行順序

2021-06-22 04:02:21 字數 520 閱讀 3453

筆試裡面考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...