C 多繼承 虛繼承

2021-07-06 05:26:25 字數 1115 閱讀 3155

一,多繼承

#include

#include

using namespace std;

class b1

;//繼承類c

void main()

//主函式

c類按照順序繼承b2,b1,b4,b3;再按照資料成員定義順序:memberb1, memberb4, memberb3,memberb2;最後是自己的構造器

二,虛繼承

#include

#include

using

namespace

std;

class person

void introduce();

teacher::teacher(string thename,string theclass):person(thename)//建構函式的繼承(含引數)

student::student(string thename,string theclass):person(thename)

teachingstudent::teachingstudent(string thename,

string classteaching,

string classattending)

:teacher(thename,classteaching),student(thename,classattending),person(thename)//teacher和student虛繼承於person,所以他們的子類teachingstudent不繼承於person

如果不是虛繼承,則teachingstudent類將擁有2個name,

void teachingstudent::introduce()

C 多繼承 菱形繼承 虛繼承

b和c都單繼承了a d繼承了b和c 是多繼承 有兩個或兩個以上的基類就是多繼承 class a public int ma class b public a public int mb class c public a public int mc class d public b,public c ...

C 多繼承與虛繼承

目錄 多繼承與虛繼承以及存在的問題 例子 虛繼承有了多繼承,虛繼承才會有意義 如果有個菱形結構的繼承,爺爺類為a,然後b,c是a的派生類,最後d是b和c的派生類,如果在a中有乙個成員變數a,d去呼叫就會出現訪問不明確,虛繼承就可以解決訪問不明確的這種問題 如果這樣繼承b,c虛繼承了a,virtual...

c 多繼承和虛繼承

一 關於多繼承 菱形繼承 指的是b繼承a,c繼承a,d繼承b和c。下圖是菱形繼承的過程,以及各類的簡單的記憶體布局。菱形繼承存在的問題 間接基類的資料會出現多份導致訪問出錯,並且存在記憶體浪費 我們可以利用虛繼承來解決這一問題。二 虛繼承 虛繼承是物件導向程式設計中的一種技術,是指乙個指定的基類,在...