在學習c++的過程中多繼承和多重繼承很重要,下邊就自己的學習過程講解一下c++中的繼承問題:
多繼承問題,先來看一段程式
#include
using namespace std;
class cbase
~cbase()
virtual void f1()
void f2()
};class www
~www()
};class csub :public cbase, public www
~csub()
virtual void f1()
void f2()
};int main()
{cbase *p1 = new cbase;
cbase *p2 = new csub;
csub obj1;
p2->f1();
p2->f2();
delete p1;
delete p2;
cout << "endl" << endl;
return 0;
執行結果如下:
wowo
xueni
woxue
nif1www
f2ffff
women
women
endl
nimen
xuexi
women
多繼承是指乙個子類繼承多個父類。多繼承對父類的個數沒有限制,繼承方式可以是公共繼承、保護繼承和私有繼承,
不寫繼承方式,預設是private繼承。
從程式和結果中我們可以看到
在多繼承中,任何父類的指標都可以指向子類的物件,在例項化子類時,先根據繼承的順序依次呼叫父類的建構函式,然後再呼叫該子類自己的建構函式。用delete時是訪問父類函式的析構函式;類指標訪問虛構函式位子類的虛構函式,一般函式訪問的是定義指標父類的函式,沒定義乙個類指標,該指標就訪問一遍父類到子類的主函式,當定義乙個子類時就遍訪一邊父類到子類的主函式一邊,,當程式結束時前邊定義了乙個類物件時,在程式結束時要遍訪一邊子類到父類的析構函式,而且程式最後定義的物件在結束時首先被訪問析構函式。(暫時寫這些以後繼續補充)
python中多繼承的問題 比較C 的多繼承
python的多繼承類是通過mro的方式來保證各個父類的函式被逐一呼叫,而且保證每個父類函式都只被呼叫一次 和c 不同的是 1.如果子類中沒有作顯示呼叫!並且父類的構造 init 中不需要傳入額外的引數。那麼,很明顯的,父類的 init 不會被呼叫 class a def init self pri...
C 中實現多繼承的方法
這篇文章主要介紹了c 中實現多繼承的方法,本文通過給介面新增擴充套件的方法實現了c 的多繼承,需要的朋友可以參考下 近日看到了乙個貼子,就是在c 語言中,如何實現多繼承的問題。相信涉獵c 不多的人 像我這樣的菜鳥 一看就覺得很可笑,c 肯定是不能實現多繼承的啊。都知道在c 中因為實現多繼承會有很多的...
C 物件模型(中)多繼承
例如下面 class b virtual void func 2 虛函式 protected int b class c virtual void func 3 虛函式 protected int c class d public b public c virtual void func 4 der...