小記:靜默如初,安之若素
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...