精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++中實(shí)現(xiàn)類似instanceof的方法

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 2024-07-18 10:16 ? 次閱讀

前言

C++有多態(tài)與繼承,但是很多人開始學(xué)習(xí)C++,有時(shí)候會(huì)面臨一個(gè)常見問題,就是如何向下轉(zhuǎn)型,特別是不知道具體類型的時(shí)候,這個(gè)時(shí)候就希望C++ 可以向Java或者Python中有instanceof這個(gè)函數(shù),可實(shí)際上C++中沒有。但是別著急,其實(shí)C++中有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)類似Java中的instanceof的功能。

在 C++ 中,確定對(duì)象的類型是編程中實(shí)際需求,使開發(fā)人員能夠做出動(dòng)態(tài)決策并執(zhí)行特定于類型的操作。無論是在編譯時(shí)檢查類型,還是在運(yùn)行時(shí)動(dòng)態(tài)標(biāo)識(shí)對(duì)象類型,C++ 都提供了強(qiáng)大的機(jī)制來獲取類型信息

使用typeid.name()方法

尋找實(shí)例的類類型,代碼演示如下:

2e1a5748-44a6-11ef-b8af-92fbcf53809c.png

使用std::is_same方法

代碼實(shí)現(xiàn)與運(yùn)行效果如下:

2e323b6a-44a6-11ef-b8af-92fbcf53809c.png

使用dynamic_cast

dynamic_cast方法轉(zhuǎn)型是C++中一種非常杰出的方法。通過dynamic_cast操作符允許跨類層次結(jié)構(gòu)動(dòng)態(tài)轉(zhuǎn)換指針和引用,從而在運(yùn)行時(shí)確認(rèn)和轉(zhuǎn)換類型。代碼演示如下:

2e559fec-44a6-11ef-b8af-92fbcf53809c.png

完整測(cè)試源代碼

 1#include
 2#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<::value){
28std::cout<(ptrBase);
47if(ptrDerived){
48std::cout<();
64printType();
65
66return0;
67}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4308

    瀏覽量

    62444
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2104

    瀏覽量

    73503
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4783

    瀏覽量

    84473

原文標(biāo)題:技巧 | C++中實(shí)現(xiàn)類似instanceof的方法

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語言實(shí)現(xiàn)面向?qū)ο蟮姆绞?C++的class的運(yùn)行原理

    這里主要介紹下在C語言中是如何實(shí)現(xiàn)的面向?qū)ο蟆V懒?b class='flag-5'>C語言實(shí)現(xiàn)面向?qū)ο蟮姆绞剑俾?lián)想下,C++
    發(fā)表于 10-21 09:00 ?1113次閱讀

    C/C++調(diào)用Java不同類的靜態(tài)方法有哪些

    C/C++調(diào)用Java不同類的靜態(tài)方法有哪些?C/C++
    發(fā)表于 09-30 08:12

    學(xué)習(xí)C++方法以及C++的就業(yè)方向

    學(xué)習(xí)方向:嵌入式+人工智能嵌入式是一門技術(shù)學(xué)習(xí)目標(biāo)1.嵌入式開發(fā)概述;(面向?qū)ο笤谇度胧介_發(fā)角色)2.嵌入式Linux C++編程;(C++概述、C++學(xué)習(xí)
    發(fā)表于 12-24 07:32

    密碼編碼學(xué)(加密方法CC++實(shí)現(xiàn)) pdf第二版

    密碼編碼學(xué)(加密方法CC++實(shí)現(xiàn))分分三個(gè)部分。第一部分描述密碼學(xué)的常用算法和數(shù)論算法,以及這些算法的
    發(fā)表于 09-25 09:49 ?0次下載

    C++靜態(tài)分析對(duì)泛型構(gòu)件的識(shí)別與表示方法

    本文從C++靜態(tài)分析的角度出發(fā),介紹了模板和泛型構(gòu)件技術(shù)、一個(gè)C++靜態(tài)分析器實(shí)現(xiàn)對(duì)模板和基本泛型構(gòu)件的分析和識(shí)別方法、以及一種基于UML
    發(fā)表于 08-17 11:16 ?14次下載

    如何利用C++實(shí)現(xiàn)RMI功能

    由于沒有類似java的“反射”機(jī)制,標(biāo)準(zhǔn)C++實(shí)現(xiàn)RMI似乎有些困難。為C++程序員所熟悉的Boost庫(kù)雖然有RCF實(shí)現(xiàn)
    發(fā)表于 11-17 18:12 ?14次下載

    C++內(nèi)部類的實(shí)現(xiàn)及應(yīng)用

    多重繼承一直是C++語言中一個(gè)廣受爭(zhēng)議的語言特征。一般認(rèn)為,在面向?qū)ο笤O(shè)計(jì)應(yīng)該謹(jǐn)慎使用多重繼承。文章分析了C++多重繼承實(shí)現(xiàn)的復(fù)雜性并對(duì)
    發(fā)表于 06-28 17:59 ?50次下載
    <b class='flag-5'>C++</b>內(nèi)部類的<b class='flag-5'>實(shí)現(xiàn)</b>及應(yīng)用

    C++反編譯控制流圖優(yōu)化方法研究

    控制流分塊是反編譯系統(tǒng)基本的功能之一。介紹了控制流分塊方法,分析了C++語言與C語言的區(qū)別,指出了現(xiàn)有的控制流分塊方法用于
    發(fā)表于 11-14 10:53 ?10次下載
    <b class='flag-5'>C++</b>反編譯<b class='flag-5'>中</b>控制流圖優(yōu)化<b class='flag-5'>方法</b>研究

    C++程序在Visual_C++6.0編譯系統(tǒng)實(shí)現(xiàn)

    C++程序在Visual_C++6.0編譯系統(tǒng)實(shí)現(xiàn)
    發(fā)表于 05-04 11:09 ?1次下載

    VISUAL C++教程之VISUAL C++的安裝和使用方法

    本文檔的主要內(nèi)容詳細(xì)介紹的是VISUAL C++教程之VISUAL C++的安裝和使用方法資料免費(fèi)下載。
    發(fā)表于 12-27 16:32 ?19次下載
    VISUAL <b class='flag-5'>C++</b>教程之VISUAL <b class='flag-5'>C++</b>的安裝和使用<b class='flag-5'>方法</b>

    EE-112:模擬C++的類實(shí)現(xiàn)

    EE-112:模擬C++的類實(shí)現(xiàn)
    發(fā)表于 05-27 16:13 ?2次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類<b class='flag-5'>實(shí)現(xiàn)</b>

    C++如何用虛函數(shù)實(shí)現(xiàn)多態(tài)

    01 — C++虛函數(shù)探索 C++是一門面向?qū)ο笳Z言,在C++里運(yùn)行時(shí)多態(tài)是由虛函數(shù)和純虛函數(shù)實(shí)現(xiàn)的,現(xiàn)在我們看下在C++
    的頭像 發(fā)表于 09-29 14:18 ?1673次閱讀

    虛擬機(jī)的設(shè)計(jì)與實(shí)現(xiàn):C\C++

    虛擬機(jī)的設(shè)計(jì)與實(shí)現(xiàn):C\C++
    發(fā)表于 02-21 15:10 ?0次下載

    介紹在C++實(shí)現(xiàn)回調(diào)的幾種方法

    C++的一個(gè)重要概念就是類,所以我們一般想讓類的成員函數(shù)作為回調(diào)函數(shù)(如果直接用非類的成員函數(shù)作為回調(diào)函數(shù),其實(shí)就和C語言中的方法一樣),但是想
    的頭像 發(fā)表于 01-18 15:09 ?3567次閱讀

    instanceof在java的用法

    instanceof是一個(gè)Java關(guān)鍵字,用于判斷一個(gè)對(duì)象是否是某個(gè)類的實(shí)例,或者是其子類的實(shí)例。 instanceof的語法是: object instanceof class 其中,object
    的頭像 發(fā)表于 11-21 10:25 ?2544次閱讀