前言
C++有多態(tài)與繼承,但是很多人開始學(xué)習(xí)C++,有時候會面臨一個常見問題,就是如何向下轉(zhuǎn)型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有instanceof這個函數(shù),可實際上C++中沒有。但是別著急,其實C++中有兩種簡單的方法可以實現(xiàn)類似Java中的instanceof的功能。
在 C++ 中,確定對象的類型是編程中實際需求,使開發(fā)人員能夠做出動態(tài)決策并執(zhí)行特定于類型的操作。無論是在編譯時檢查類型,還是在運行時動態(tài)標識對象類型,C++ 都提供了強大的機制來獲取類型信息
使用typeid.name()方法
尋找實例的類類型,代碼演示如下:
使用std::is_same方法
代碼實現(xiàn)與運行效果如下:
使用dynamic_cast
dynamic_cast方法轉(zhuǎn)型是C++中一種非常杰出的方法。通過dynamic_cast操作符允許跨類層次結(jié)構(gòu)動態(tài)轉(zhuǎn)換指針和引用,從而在運行時確認和轉(zhuǎn)換類型。代碼演示如下:
完整測試源代碼
1#include2#include 3#include 4 5usingnamespacecv; 6usingnamespacestd; 7 8classVehicles{ 9public: 10stringmake; 11stringmodel; 12stringyear; 13}; 14 15classAircraft{ 16public: 17stringmake; 18stringmodel; 19stringyear; 20}; 21 22template 23voidprintType(){ 24if(std::is_same ::value){ 25std::cout<"Type?is?Aircraft"?<::value){ 28std::cout<"Type?is?Vehicles"?<(ptrBase); 47if(ptrDerived){ 48std::cout<"Object?is?of?type?Derived"?<(); 64printType (); 65 66return0; 67}
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4331瀏覽量
62609 -
C++
+關(guān)注
關(guān)注
22文章
2108瀏覽量
73646 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84682
原文標題:技巧 | C++中實現(xiàn)類似instanceof的方法
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論