C 中的多繼承

2021-08-08 16:21:58 字數 1090 閱讀 4183

在學習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...