C++允許讓衍生類別同時直接繼承兩個以上的父類別,例如有A、B兩個類別,您可以使用下面的方式來讓C類別直接繼承這兩個類別:
class
C : public A, public B {
public:
C(int x) : A(x), B(x) { //
多重繼承下的建構函式呼叫
// 實作
}
// 實作
};
上面也同時示範了在繼承之後的的建構函式呼叫,沒有參數的預設建構函式不用使用這種方式執行,它會自動被呼叫,而解構函式也是會自動執行。
多重繼承之後的建構函式執行順序,是依您撰寫程式時的順序由左而右決定,最後才是繼承後衍生類別,例如上面的例子中,會先執行A類別定義的建構函式,然後
再執行B類別的建構函式,最後執行C類別的建構函式,而解構函式的執行則正好相反,先執行衍生類別的解構函式,然後再右向左執行,使用下面這個簡單的範例
來示範:
#include <iostream> using namespace std;
class FooA { public: FooA() { cout << "執行FooA建構函式" << endl; }
~FooA() { cout << "執行FooA解構函式" << endl; } };
class FooB { public: FooB() { cout << "執行FooB建構函式" << endl; }
~FooB() { cout << "執行FooB解構函式" << endl; } };
class FooC : public FooA, public FooB { public: FooC() { cout << "執行FooC建構函式" << endl; }
~FooC() { cout << "執行FooC解構函式" << endl; } };
int main() { FooC c;
cout << endl;
return 0; }
執行結果:
執行FooA建構函式
執行FooB建構函式
執行FooC建構函式
執行FooC解構函式
執行FooB解構函式
執行FooA解構函式
|
|