C 66 C 中的型別識別

2021-09-28 20:33:08 字數 1400 閱讀 1625

靜態型別: 變數(物件)自身的型別

動態型別:指標(引用)所指向物件的實際型別

基類指標是否可以強制型別轉換為子類指標 取決動態型別

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 危險的轉換方式 問...