国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C++ > 正文

C++的四種強(qiáng)制類型轉(zhuǎn)換

2019-11-11 07:49:05
字體:
供稿:網(wǎng)友

C++的四種強(qiáng)制類型轉(zhuǎn)換,所以C++不是類型安全的。分別為:static_cast , dynamic_cast , const_cast , reinterPRet_cast

為什么使用C風(fēng)格的強(qiáng)制轉(zhuǎn)換可以把想要的任何東西轉(zhuǎn)換成合乎心意的類型。那為什么還需要一個(gè)新的C++類型的強(qiáng)制轉(zhuǎn)換呢?

新類型的強(qiáng)制轉(zhuǎn)換可以提供更好的控制強(qiáng)制轉(zhuǎn)換過程,允許控制各種不同種類的強(qiáng)制轉(zhuǎn)換。C++中風(fēng)格是static_cast<type>(content)。C++風(fēng)格的強(qiáng)制轉(zhuǎn)換其他的好處是,它們能更清晰的表明它們要干什么。程序員只要掃一眼這樣的代碼,就能立即知道一個(gè)強(qiáng)制轉(zhuǎn)換的目的。

四種轉(zhuǎn)換的區(qū)別:

static_cast:可以實(shí)現(xiàn)C++中內(nèi)置基本數(shù)據(jù)類型之間的相互轉(zhuǎn)換。

1int c=static_cast<int>(7.987);

如果涉及到類的話,static_cast只能在有相互聯(lián)系的類型中進(jìn)行相互轉(zhuǎn)換,不一定包含虛函數(shù)。

classA{};classB:public A{};classC{}; int main(){    A* a=newA;    B* b;    C* c;    b=static_cast<B>(a); // 編譯不會報(bào)錯(cuò), B類繼承A類    c=static_cast<B>(a); // 編譯報(bào)錯(cuò), C類與A類沒有任何關(guān)系    return1;}

const_cast: const_cast操作不能在不同的種類間轉(zhuǎn)換。相反,它僅僅把一個(gè)它作用的表達(dá)式轉(zhuǎn)換成常量。它可以使一個(gè)本來不是const類型的數(shù)據(jù)轉(zhuǎn)換成const類型的,或者把const屬性去掉。

reinterpret_cast: 有著和C風(fēng)格的強(qiáng)制轉(zhuǎn)換同樣的能力。它可以轉(zhuǎn)化任何內(nèi)置的數(shù)據(jù)類型為其他任何的數(shù)據(jù)類型,也可以轉(zhuǎn)化任何指針類型為其他的類型。它甚至可以轉(zhuǎn)化內(nèi)置的數(shù)據(jù)類型為指針,無須考慮類型安全或者常量的情形。不到萬不得已絕對不用。

dynamic_cast: 

(1)其他三種都是編譯時(shí)完成的,dynamic_cast是運(yùn)行時(shí)處理的,運(yùn)行時(shí)要進(jìn)行類型檢查。

(2)不能用于內(nèi)置的基本數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。

(3)dynamic_cast轉(zhuǎn)換如果成功的話返回的是指向類的指針或引用,轉(zhuǎn)換失敗的話則會返回NULL。

(4)使用dynamic_cast進(jìn)行轉(zhuǎn)換的,基類中一定要有虛函數(shù),否則編譯不通過。

        B中需要檢測有虛函數(shù)的原因:類中存在虛函數(shù),就說明它有想要讓基類指針或引用指向派生類對象的情況,此時(shí)轉(zhuǎn)換才有意義。

        這是由于運(yùn)行時(shí)類型檢查需要運(yùn)行時(shí)類型信息,而這個(gè)信息存儲在類的虛函數(shù)表(關(guān)于虛函數(shù)表的概念,詳細(xì)可見<Inside c++ object model>)中,

        只有定義了虛函數(shù)的類才有虛函數(shù)表。

 (5)在類的轉(zhuǎn)換時(shí),在類層次間進(jìn)行上行轉(zhuǎn)換時(shí),dynamic_cast和static_cast的效果是一樣的。在進(jìn)行下行轉(zhuǎn)換時(shí),dynamic_cast具有類型檢查的功能,比               static_cast更安全。向上轉(zhuǎn)換即為指向子類對象的向下轉(zhuǎn)換,即將父類指針轉(zhuǎn)化子類指針。向下轉(zhuǎn)換的成功與否還與將要轉(zhuǎn)換的類型有關(guān),即要轉(zhuǎn)換的指針指向的對象的實(shí)際類型與轉(zhuǎn)換以后的對象類型一定要相同,否則轉(zhuǎn)換失敗。

參考例子:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970#include<iostream>#include<cstring>usingnamespace std;classA{   public:   virtualvoid f()   {       cout<<"hello"<<endl;       };}; classB:public A{    public:    voidf()    {        cout<<"hello2"<<endl;        }; }; classC{  voidpp()  {      return;  }}; int fun(){    return1;}int main(){    A* a1=newB;//a1是A類型的指針指向一個(gè)B類型的對象    A* a2=newA;//a2是A類型的指針指向一個(gè)A類型的對象    B* b;    C* c;    b=dynamic_cast<B*>(a1);//結(jié)果為not null,向下轉(zhuǎn)換成功,a1之前指向的就是B類型的對象,所以可以轉(zhuǎn)換成B類型的指針。    if(b==NULL)    {        cout<<"null"<<endl;    }    else    {        cout<<"not null"<<endl;    }    b=dynamic_cast<B*>(a2);//結(jié)果為null,向下轉(zhuǎn)換失敗    if(b==NULL)    {        cout<<"null"<<endl;    }    else    {        cout<<"not null"<<endl;    }    c=dynamic_cast<C*>(a);//結(jié)果為null,向下轉(zhuǎn)換失敗    if(c==NULL)    {        cout<<"null"<<endl;    }    else    {        cout<<"not null"<<endl;    }    delete(a);    return0;}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
美女网站在线观看| 久久亚洲国产成人亚| 高清av在线| 国产在线观看av| 午夜视频在线看| jizz在线免费观看| 欧美韩日国产| 国产精品免费视频二三区| √8天堂资源地址中文在线| 亚洲天堂二区| 五月婷婷在线观看| 精品国内自产拍在线视频| 人人干人人插| 国产精品国产国产aⅴ| 2018中文字幕在线| 国产在线日本| 精品国产高清自在线一区二区三区 | 中文字幕视频在线免费| 国产精品入口麻豆免费| 日本视频一二三区中文字幕| 大香伊人中文字幕精品| 精品亚洲成a人片在线观看| 久热中文字幕在线观看| 精品久久亚洲一级α| 国产在线观看网站| 免费99热在线观看| 在线激情网站| 国产精品入口免费麻豆| 国产尤物视频在线| av中文在线资源| 国产网站观看9久| 欧美日韩视频精品一区二区| 国产三区四区在线观看| 国内精品一区视频| 亚洲精品在线视频免费| 国产高清免费视频| 精品一区二区三区在线观看l| 99视频资源网| 午夜视频在线看| 中文字幕网在线| 91av资源在线| 国产美女极品在线| 成人无遮挡免费网站视频在线观看| 永久免费av片在线观看全网站| 国产视频一二三区| 国产天堂在线观看| 国产一级大片| 成人精品一区二区三区免费| 狠狠操视频网站| 导航福利在线| 国产无遮挡又黄又爽免费网站| 国产美女被草| 国产一二三区在线视频| 国产香蕉在线| 午夜影院在线免费观看| 日本免费视频www| 成人精品福利| 国产盗摄精品一区二区酒店| 国产激情视频在线| 在线播放av网站| 噜噜噜噜噜在线视频| 国产麻豆免费| 国产天堂在线观看| 亚洲私人影吧| 中中文字幕av在线| 99热国产在线| 丁香视频五月| 91精品大全| 国产在线观看av| 亚洲欧洲成人| 国产视频一二| 黄网址在线播放免费| 国产三区视频在线观看| 香蕉视频网站在线播放| 国产精品作爱| www在线免费观看视频| 18加网站在线| 在线国产一级| 国产一二三四| 国产在线激情视频| 一级二级三级在线观看| 国产三级在线播放| 久草福利资源在线视频| 永久免费在线观看| 国产激情视频在线观看| 99热在线免费观看| 国产九九在线| 最近中文字幕大全中文字幕免费| av在线天堂| 在线观看av的网站| 在线观看免费高清完整| 国产99re| 国产二区视频在线观看| 国产色a在线| 国产日产一区二区三区| 中文字幕在线视频不卡| 丁香六月婷婷| 九九精品视频在线观看九九| 麻豆精品不卡国产免费看| 亚洲精品国自产拍在线观看| 亚洲一区二区三区在线观看网站| 国产丝袜在线| 国产寡妇树林野战在线播放| 国产人成在线视频| 国产不卡视频| 天天噜天天色| www在线视频| 免费看的av| 国产中文字幕在线播放| 丁香视频免费观看| 国产福利免费在线观看| 91麻豆免费在线视频| 91久久麻豆| www.超级碰| 成年人在线观看| 最近免费中文字幕在线第一页 | 亚洲精品在线视频免费| h网站久久久| 青青草免费在线视频| www555久久| 中文字幕在线观看日本| 国产福利在线播放| 日韩不卡高清| 国产精品视频福利一区二区| 在线黄色国产电影| 久久香蕉一区| 2021av天天| 国产美女视频一区二区三区| 国产精品视频一区二区久久 | 国产精品四虎| 四虎一区二区三区| 国产一卡2卡3卡四卡网站| 精品无人区乱码1区2区3区免费| 青青草在线视频免费观看| 国产偷窥老熟盗摄视频| 天天艹天天操| 在线一二三区| 国产一二三区在线视频| 日本电影在线观看| 在线观看av网站| 国产成人亚洲精品播放器下载| 操人视频91| 尤物在线精品视频| 天天操天天是| 久久五月精品中文字幕| av在线不卡播放| 精品全国在线一区二区| 国产卡1卡2卡三卡在线| 欧美艹逼视频| www.操操操.com| 亚洲最新永久在线观看| 国产三级香港三韩国三级| 九九在线免费视频| av中文字幕在线看| a视频免费看| 青青草视频在线免费观看| 午夜影院在线| 日本精品一区二区三区在线播放| 国产精品jvid在线观看| 18加网站在线| 国产第一页在线| 99色在线观看| 欧美日韩视频精品二区| 操人视频91| 99视频在线观看地址| 最新中文字幕在线| 国产精品扒开做爽爽爽的视频| 国产色在线观看| 在线伊人免费视频| 日本一本久久| 久久久久久五月天久久久久久久久| 日本成人网址| 成在在线免费视频| 五月婷婷开心综合| 国产成免费视频| 一级二级在线观看| 精品中文字幕不卡在线视频| 中文字幕在线视频不卡| 国产www.大片在线| 免费午夜一级| 国产精品第八页| 麻豆网站在线| 96久久久久久| 开心快乐六月丁香婷婷| 午夜不卡视频| 永久免费av片在线观看全网站| 欧美性猛交p30| 国产白浆在线| 国产尤物一区二区三区| 国产95在线|亚洲| 超碰人人在线| 99re热视频在线| 国产免费av网站| 97中文字幕| 国产精品入口免费麻豆| 狠狠狠狠狠狠操| 全网国产福利在线播放| 69视频在线观看| 国产天堂素人系列在线视频| 激情丁香婷婷|