前言
C++有多態與繼承,但是很多人開始學習C++,有時候會面臨一個常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++ 可以向Java或者Python中有instanceof這個函數,可實際上C++中沒有。但是別著急,其實C++中有兩種簡單的方法可以實現類似Java中的instanceof的功能。
在 C++ 中,確定對象的類型是編程中實際需求,使開發人員能夠做出動態決策并執行特定于類型的操作。無論是在編譯時檢查類型,還是在運行時動態標識對象類型,C++ 都提供了強大的機制來獲取類型信息
使用typeid.name()方法
尋找實例的類類型,代碼演示如下:

使用std::is_same方法
代碼實現與運行效果如下:

使用dynamic_cast
dynamic_cast方法轉型是C++中一種非常杰出的方法。通過dynamic_cast操作符允許跨類層次結構動態轉換指針和引用,從而在運行時確認和轉換類型。代碼演示如下:

完整測試源代碼
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}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
函數
+關注
關注
3文章
4417瀏覽量
67499 -
C++
+關注
關注
22文章
2123瀏覽量
77110 -
python
+關注
關注
57文章
4876瀏覽量
90022
原文標題:技巧 | C++中實現類似instanceof的方法
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
C語言實現面向對象的方式 C++中的class的運行原理
這里主要介紹下在C語言中是如何實現的面向對象。知道了C語言實現面向對象的方式,再聯想下,C++中
發表于 10-21 09:00
?1756次閱讀
學習C++的方法以及C++的就業方向
學習方向:嵌入式+人工智能嵌入式是一門技術學習目標1.嵌入式開發概述;(面向對象在嵌入式開發中角色)2.嵌入式Linux C++編程;(C++概述、C++學習
發表于 12-24 07:32
密碼編碼學(加密方法的C與C++實現) pdf第二版
密碼編碼學(加密方法的C與C++實現)分分三個部分。第一部分描述密碼學中的常用算法和數論算法,以及這些算法的
發表于 09-25 09:49
?0次下載
C++靜態分析中對泛型構件的識別與表示方法
本文從C++靜態分析的角度出發,介紹了模板和泛型構件技術、一個C++靜態分析器實現中對模板和基本泛型構件的分析和識別方法、以及一種基于UML
發表于 08-17 11:16
?14次下載
如何利用C++也實現RMI功能
由于沒有類似java的“反射”機制,標準C++下實現RMI似乎有些困難。為C++程序員所熟悉的Boost庫雖然有RCF實現了
發表于 11-17 18:12
?14次下載
C++反編譯中控制流圖優化方法研究
控制流分塊是反編譯系統中基本的功能之一。介紹了控制流分塊方法,分析了C++語言與C語言的區別,指出了現有的控制流分塊方法用于
發表于 11-14 10:53
?10次下載
VISUAL C++教程之VISUAL C++的安裝和使用方法
本文檔的主要內容詳細介紹的是VISUAL C++教程之VISUAL C++的安裝和使用方法資料免費下載。
發表于 12-27 16:32
?20次下載
在C++中如何用虛函數實現多態
01 — C++虛函數探索 C++是一門面向對象語言,在C++里運行時多態是由虛函數和純虛函數實現的,現在我們看下在C++
介紹在C++中實現回調的幾種方法
在C++中的一個重要概念就是類,所以我們一般想讓類的成員函數作為回調函數(如果直接用非類的成員函數作為回調函數,其實就和C語言中的方法一樣),但是想
instanceof在java中的用法
instanceof是一個Java關鍵字,用于判斷一個對象是否是某個類的實例,或者是其子類的實例。 instanceof的語法是: object instanceof class 其中,object
C++中實現類似instanceof的方法
評論