前言
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)標(biāo)識對象類型,C++ 都提供了強(qiáng)大的機(jī)制來獲取類型信息
使用typeid.name()方法
尋找實例的類類型,代碼演示如下:
使用std::is_same方法
代碼實現(xiàn)與運行效果如下:
使用dynamic_cast
dynamic_cast方法轉(zhuǎn)型是C++中一種非常杰出的方法。通過dynamic_cast操作符允許跨類層次結(jié)構(gòu)動態(tài)轉(zhuǎn)換指針和引用,從而在運行時確認(rè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文章
4379瀏覽量
64829 -
C++
+關(guān)注
關(guān)注
22文章
2119瀏覽量
75260 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86694
原文標(biāo)題:技巧 | C++中實現(xiàn)類似instanceof的方法
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
C語言實現(xiàn)面向?qū)ο蟮姆绞?C++中的class的運行原理
學(xué)習(xí)C++的方法以及C++的就業(yè)方向
密碼編碼學(xué)(加密方法的C與C++實現(xiàn)) pdf第二版
C++靜態(tài)分析中對泛型構(gòu)件的識別與表示方法
如何利用C++也實現(xiàn)RMI功能
C++反編譯中控制流圖優(yōu)化方法研究

C++程序在Visual_C++6.0編譯系統(tǒng)中的實現(xiàn)
VISUAL C++教程之VISUAL C++的安裝和使用方法

在C++中如何用虛函數(shù)實現(xiàn)多態(tài)
介紹在C++中實現(xiàn)回調(diào)的幾種方法
instanceof在java中的用法
EE-112:模擬C++中的類實現(xiàn)

評論