c 物件模型 多型1

2021-05-17 10:38:23 字數 906 閱讀 3801

a a;

b b;//b類是a類的子類

a=b;//b的內容被a類物件進行裁剪,a仍然屬於a類

a.func();//呼叫的是a的函式

必須用引用和指標,上述因為是在編譯時就確定好了,所以呼叫的仍然是父類.

a &a=b;

a.func();//這樣可以

對多型的支援

1、型別的隱含轉化

circle作為shap的子類

shap *ps=new circle();

2、經由虛函式機制

ps->rotate();

3、dnnamic和typeid

if (circle *pc=dynamic_cast(ps))

多型介面的定義

通常定義在乙個抽象的基類中的介面由虛函式支援。

可以程式執行期決定哪個類執行。

比如func(

a a, const a *a1,const a&a2

)main()

如此說來類物件要多少空間來表示呢

1、非靜態資料成員的空間

2、為支援virtual而產生的如虛函式表及其指標等所需要的空間

3、由於成員存放的邊界需要而產生的邊界空間。

4、指標無論指向什麼型別,其空間大小都是一樣的,只是型別不同,其指向的位址所代表內容的長度不同而已

指向物件的指標

b b;//b是a的子類,且b比a多定義幾個非靜態成員

a*a=&b;//指標指向的空間僅包括a類物件的空間大小,不包括b類的幾個非靜態成員所在的空間,儘管

//已經指向了b類的空間,不能使用a來操作b類物件所特有的東東

b *bb=&b;//包括b類物件所占用的空間。

//以下方法可以使用b類物件的空間

((b*)a)->x;//x是b類的int型的資料成員

c 物件模型 多型1

a a b b b類是a類的子類 a b b的內容被a類物件進行裁剪,a仍然屬於a類 a.func 呼叫的是a的函式 必須用引用和指標,上述因為是在編譯時就確定好了,所以呼叫的仍然是父類.a a b a.func 這樣可以 對多型的支援 1 型別的隱含轉化 circle作為shap的子類 shap ...

c 多型 多型物件模型

1.多型 在c 程式設計中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式。在物件導向方法中一般是這樣表述多型性的 向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為 即方法 也就是說,每個物件可以用自己的方式去響應共同的訊息。所謂訊息,就是呼叫...

多型 多型物件模型

1 什麼多型?當使用基類的指標或引用呼叫重寫的虛函式時,指向父類調的就是父類的虛函式,指向子類調的就是子類的虛函式。下面我們來看一段 sizeof aa 的結果為什麼會是8呢?這是因為函式fun1是乙個虛函式,函式內部存在乙個虛表指標。單繼承物件模型 由於編譯器做了一定的優化,子類中自己定義的函式在...