靜態型別: 變數(物件)自身的型別
動態型別:指標(引用)所指向物件的實際型別
基類指標是否可以強制型別轉換為子類指標 取決動態型別
void test(base* b)
問題:c++中如何得到動態型別?
方案1:
// dynamic_cast 能夠判斷轉換是否成功,但是不能說明指標指向的具體型別
// 轉換不成功就返回空指標或者0
}int main(int argc, char *ar**)
討論:該方案不利於維護,每次派生類都要寫返回具體的型別。
方案2:
//linux輸出結果 基類有虛函式,返回的是動態型別
4base
7derived
5child
注意:
typeid 在不同的編譯器裡面結果不一樣的.。
66 c 中的型別識別
在物件導向中可能出現下面的情況 基類指標指向子類物件,基類引用成為子類物件的別名。base p new derived base r p 靜態型別 動態型別 靜態型別 變數 物件 自身的型別 動態型別 指標 引用 所指向物件的實際型別 void test base b b指向的型別不確定 危險的轉換...
66 C 中的型別識別
注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 型別識別 1 在物件導向中可能出現下面的情況 基類指標指向子類物件 基類引用成為了子類物件的別名 無法判斷p指向父類物件還是子類物件。p期望指向base 父類 2 靜態型別...
第66課 C 中的型別識別
1 在物件導向中可能出現下面的情況 基類指標指向子類物件 基類引用成為子類物件的別名 靜態型別 變數 物件 自身的型別 定義變數型別時型別或引數型別 動態型別 指標 引用 所指向的物件的實際型別 2 基類指標轉子類指標 示例 derived d static cast pbase 危險的轉換方式 問...