最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C++中四種類型的轉(zhuǎn)換

 更新時間:2022年12月08日 10:41:39   作者:Hello_Bugs  
這篇文章主要是想和大家一起聊聊來C++中的四種類型轉(zhuǎn)換?:const_cast、static_cast、reinterpret_cast和dynamic_cast,感興趣的可以了解一下

C語言中我們使用 int a=(int) b;的方式強制轉(zhuǎn)換

C++提供了四種類型轉(zhuǎn)換方式

const_cast

把常量屬性去掉的一個轉(zhuǎn)換.

const  int a =10;
int *p1=(int *)(&a);//C 語言 OK
int *p2=const_cast<int *>(&a);//OK

???????double *p3 =(double *) (&a)//c 語言中可以,p3的尋址范圍變大,帶來風險

double  *p4=const_cast<double *>(&a);//c++在編譯階段就提示錯誤

只用于去掉常量屬性的地方

int b=const_cast<int>(a);//NO ,ERROR const_carst<這里必須是指針或者引用>

static_cast

能夠提供編譯器認為安全的類型轉(zhuǎn)換

90%使用場景是這個,這個用的是比較多的,幾乎能做任何類型轉(zhuǎn)換,但是是要譯器認為安全的類型轉(zhuǎn)換

int a=10;
char b=static_cast<int>(a);//OK

int *p=nullptr;
short *b=static_cast<short *>(p) ;  //c++ NO , 兩者之間沒有任何聯(lián)系
double *b=static_cast<double *>(p) ;//C++ NO , 兩者之間沒有任何聯(lián)系
double *b1=(double *)(p) ;//C語言 OK 

基類和派生類之間可以使用 static_cast 

reinterpret_cast

int *p=nullptr;
short *b=reinterpret_cast<short *>(p) ;  //c++ OK ,
double *b=reinterpret_cast<double *>(p) ;//C++ OK , 
double *b1=(double *)(p) ;//C語言 OK 

類似于C語言的強制類型轉(zhuǎn)換

dynamic_cast

主要用著繼承結(jié)構(gòu)中,可以支持RTTI類型識別的上下轉(zhuǎn)換

代碼

#include <iostream>
using namespace std;

class  A{

public:
    
    void virtual function(){
		
	cout<<"A function()"<<endl;
		
    }

};

class B : public A{

public:

    void virtual function(){	
	cout<<"B function()"<<endl;
		
   }
	
   void virtual test(){		
	cout<<"B function()"<<endl;
		
   }

};

class C : public A{

public:

    void virtual function(){
		
	cout<<"C function()"<<endl;
		
    }

};

class D : public A{

public:

    void virtual function(){		
	cout<<"D function()"<<endl;		
    }

};

void show(A * pa){
       //dynamic_cast 會檢查p指針是否指向的是一個B對象
       //pb->vfptr->vftable ->RTTI信息,如果dynamic_cast轉(zhuǎn)換成功
       //返回 指向B的地址,否則返回nullptr
       B  *pb =dynamic_cast<B *> pa;
       if(pb!=nullptr){
	    pb->test();
       }
       else{
	    pa->function();
       }
}


int main(){
   B b;
   C c;
   D d;
   show(&b);
   show(&c);
   show(&d);
   return 0; 
        
}

到此這篇關(guān)于詳解C++中四種類型的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)C++類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或

相關(guān)文章

  • VS2019配置BOOST的方法(v1.70.0庫)

    VS2019配置BOOST的方法(v1.70.0庫)

    這篇文章主要介紹了VS2019配置BOOST的方法(v1.70.0庫),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • C++共享智能指針shared_ptr的實現(xiàn)

    C++共享智能指針shared_ptr的實現(xiàn)

    在C++中沒有垃圾回收機制,必須自己釋放分配的內(nèi)存,否則就會造成內(nèi)存泄露,解決這個問題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • C++精要分析lambda表達式的使用

    C++精要分析lambda表達式的使用

    Lambda表達式是現(xiàn)代C++在C ++ 11和更高版本中的一個新的語法糖 ,在C++11、C++14、C++17和C++20中Lambda表達的內(nèi)容還在不斷更新。 lambda表達式(也稱為lambda函數(shù))是在調(diào)用或作為函數(shù)參數(shù)傳遞的位置處定義匿名函數(shù)對象的便捷方法
    2022-05-05
  • OpenCV 圖像拼接和圖像融合的實現(xiàn)

    OpenCV 圖像拼接和圖像融合的實現(xiàn)

    本文主要介紹了OpenCV 圖像拼接和圖像融合,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 利用Matlab復刻掃雷小游戲

    利用Matlab復刻掃雷小游戲

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本程序參考《掃雷》的規(guī)則進行了簡化,用Matlab實現(xiàn),感興趣的小伙伴可以學習一下
    2022-03-03
  • C/C++計算程序執(zhí)行時間的幾種方法實現(xiàn)

    C/C++計算程序執(zhí)行時間的幾種方法實現(xiàn)

    本文主要介紹了C/C++計算程序執(zhí)行時間的幾種方法實現(xiàn),包括使用clock()函數(shù)、使用庫和使用time.h頭文件中的time()函數(shù),具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • 引用numpy出錯詳解及解決方法

    引用numpy出錯詳解及解決方法

    這篇文章主要介紹了引用numpy出錯 解決方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • C++實現(xiàn)區(qū)塊鏈的源碼

    C++實現(xiàn)區(qū)塊鏈的源碼

    這篇文章主要介紹了C++實現(xiàn)區(qū)塊鏈的源碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • C語言題解Leetcode56合并區(qū)間實例

    C語言題解Leetcode56合并區(qū)間實例

    這篇文章主要為大家介紹了C語言題解Leetcode56合并區(qū)間實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • 詳解C語言結(jié)構(gòu)體的定義和使用

    詳解C語言結(jié)構(gòu)體的定義和使用

    這篇文章主要為大家介紹了C語言結(jié)構(gòu)體的定義和使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論

什邡市| 镇安县| 黄石市| 开平市| 樟树市| 乐都县| 西安市| 莱西市| 锡林郭勒盟| 龙泉市| 保定市| 西安市| 玉环县| 三台县| 察哈| 宿松县| 富顺县| 南丰县| 文水县| 简阳市| 平谷区| 临武县| 正安县| 吴忠市| 博客| 佛学| 岳西县| 舞阳县| 乐山市| 昌宁县| 华宁县| 大竹县| 兴仁县| 云阳县| 黑水县| 佛冈县| 隆回县| 荣成市| 大丰市| 科技| 子洲县|