C 學習總結21 執行時的型別資訊

2021-10-01 19:25:42 字數 1324 閱讀 1913

小記:靜默如初,安之若素

1. typeid操作符

#include

typeid

(型別/物件);注:

返回typeinfo物件,用於描述型別資訊,其中包含乙個name的成員函式,可以將型別資訊轉換為字串形式。

typeinfo提供了對」==「和」!=「操作符過載的支援,通過它們可以直接進行型別之間的比較。

1 #include 

2 #include

3 #include

4using

namespace std;56

classx7

9};10

11classy:

public x

1214};

1516

classz:

public x

1719};

2021

22void

func

(x &x)

2329

//else if(!strcmp(typeid(x).name(), "1z"))

30elseif(

typeid

(x)==

typeid

(z))

3134

else

3538}39

40int

main

(void)41

2. 動態型別轉換操作符

語法:目標型別變數 =

dynamic_cast

《目標型別》

(源型別變數)

;

適用場景:

用於具有多型繼承關係的父子類指標或引用的顯示轉換

注:在轉換過程中,會檢查目標物件的型別和期望轉換的型別是否一致,如果一致轉換成功,否則轉換失敗。如果轉換的是指標,返回null表示失敗,如果轉換引用, 丟擲」bad_cast「異常表示失敗。

1 #include 

2using

namespace std;34

classa5

7};8

9classb:

public a

1012};

1314

classc:

public a

1517};

1819

intmain

(void)20

執行時型別資訊

一.向下造型 動態型別轉換 dynamic cast 用於將基類型別的指標或引用轉換為其子類型別的指標或引用,前提是子類必須從基類多型繼承,即基類包含至少乙個虛函式 class a class b public a b b a pa b b pb dynamic cast pa a ra b b r...

執行時型別資訊RTTI

我們在寫c 的時候經常碰到使用dynamic cast進行型別轉換的情況,也都知道經過dynamic cast的轉換更加安全,因為dynamic cast進行了型別檢查。但是可能很多人不知道dynamic cast是c 執行時型別資訊 rtti 機制鏈條上的乙個節點。rtti提供了兩個操作符和乙個類...

MFC執行時型別資訊相關類

some guys seem to be unsatisfied to use mfc,they prefer to use pure win32 c but in some domains,mfc or similar framework will be a necessary option.th...