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是乙個虛函式,函式內部存在乙個虛表指標。單繼承物件模型 由於編譯器做了一定的優化,子類中自己定義的函式在...