版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第頁共頁C++的類型轉(zhuǎn)換介紹C++的類型轉(zhuǎn)換介紹1、類型轉(zhuǎn)換名稱和語法C風(fēng)格的強(qiáng)迫類型轉(zhuǎn)換(TypeCast)很簡單,不管什么類型的轉(zhuǎn)換統(tǒng)統(tǒng)是:TYPEb=(TYPE)aC++風(fēng)格的類型轉(zhuǎn)換提供了4種類型轉(zhuǎn)換操作符來應(yīng)對不同場合的應(yīng)用。static_cast靜態(tài)類型轉(zhuǎn)換。如int轉(zhuǎn)換成charreinterpreter_cast重新解釋類型dynamic_cast命名上理解是動態(tài)類型轉(zhuǎn)換。如子類和父類之間的多態(tài)類型轉(zhuǎn)換。const_cast字面上理解就是去const屬性。4種類型轉(zhuǎn)換的格式:TYPEB=static_cast<TYPE》(a)2、類型轉(zhuǎn)換一般性介紹4中類型轉(zhuǎn)化介紹1〕static_cast<》靜態(tài)類型轉(zhuǎn)換,編譯的時(shí)c++編譯器會做類型檢查;根本類型能轉(zhuǎn)換但是不能轉(zhuǎn)換指針類型2〕假設(shè)不同類型之間,進(jìn)展強(qiáng)迫類型轉(zhuǎn)換,用reinterpret_cast<》進(jìn)展重新解釋3〕dynamic_cast<》,動態(tài)類型轉(zhuǎn)換,平安的基類和子類之間轉(zhuǎn)換;運(yùn)行時(shí)類型檢查〔C++特有的〕4〕const_cast<》,去除變量的只讀屬性〔C++特有的〕,變量的類型必須是指針,指針指向的內(nèi)存空間可被修改一般性結(jié)論C語言中能隱式類型轉(zhuǎn)換的,在c++中可用static_cast<》進(jìn)展類型轉(zhuǎn)換。因C++編譯器在編譯檢查一般都能通過;C語言中不能隱式類型轉(zhuǎn)換的,在c++中可以用reinterpret_cast<》進(jìn)展強(qiáng)行類型解釋。static_cast<》和reinterpret_cast<》根本上把C語言中的.強(qiáng)迫類型轉(zhuǎn)換給覆蓋reinterpret_cast<》很難保證移植性。3、典型案例代碼中包含了4中類型轉(zhuǎn)化的實(shí)例,以及注意點(diǎn)。#include<iostream》usingnamespacestd;classAnimal{public:virtualvoidaction{}};classDog:publicAnimal{public:virtualvoidaction{}voiddoSwim{}};classCat:publicAnimal{public:virtualvoidaction{}voiddoTree{}};classDesk{public:voidaction{}};voidObjPlay(Animal*animl){animl-》action;Dog*dog=dynamic_cast<Dog*》(animl);if(dog!=NULL)//判斷是不是dog{dog-》action;dog-》doSwim;}Cat*cat=dynamic_cast<Cat*》(animl);if(cat!=NULL)//判斷是不是cat{cat-》action;cat-》doTree;}cout<<“funcObjPlayisexit!!!}//典型用法把形參的只讀屬性去掉voidOpbuf(constchar*p){//char*p2=p;err:constchar*不能初始化為char*//p[0]='b';err:必須是可修改的左值char*p2=const_cast<char*》(p);//去除只讀的屬相p2[0]='b';}intmain{//靜態(tài)類型轉(zhuǎn)化static_cast<》doubled=3.14159;inti1,i2;i1=d;//C中的隱式類型轉(zhuǎn)化i2=static_cast<int》(d);//C++中的靜態(tài)類型轉(zhuǎn)化//重新解釋類型reinterpret_cast<》char*p=“abcd”;int*p1=NULL;int*p2=NULL;p1=(int*)p;//C中強(qiáng)迫類型轉(zhuǎn)化//p2=static_cast<int*》(p);編譯報(bào)錯(cuò),類型轉(zhuǎn)化錯(cuò)誤,靜態(tài)類型不能轉(zhuǎn)化指針p2=reinterpret_cast<int*》(p);//C++中的重新解釋類型//動態(tài)類型轉(zhuǎn)換dynamic_cast<》Animalan;Animal*pAn=-an;ObjPlay(pAn);Dogdog;Dog*pDog=-dog;ObjPlay(pDog);Catcat;Cat*pCat=-cat;ObjPlay(pCat);Deskdesk;Desk*pDesk=-desk;//Animal*pAn=dynamic_cast<Animal*》(pDesk);不同的基類指針之間不能互相轉(zhuǎn)化,平安//去除變量的只讀屬性,const_cast<》,此類型必須是指針charbuf[100]=“aaaaaaaaaaaa”;//
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版返點(diǎn)合同協(xié)議書
- 2024贈送房地產(chǎn)投資房產(chǎn)協(xié)議范本3篇
- 2025年度醫(yī)療設(shè)備制造加工承包合同范本3篇
- 2024物業(yè)租賃合同規(guī)定書
- 2024證券公司資產(chǎn)托管業(yè)務(wù)服務(wù)合同
- 臨床微生物標(biāo)本的采集方法與運(yùn)送課件
- 2025年度互聯(lián)網(wǎng)公司100%股權(quán)轉(zhuǎn)讓協(xié)議書3篇
- 2024版海洋工程勘探與開發(fā)合作合同2篇
- 2024西安市二手房交易資金監(jiān)管服務(wù)合同
- 珠寶銷售顧問月工作總結(jié)
- 商鋪?zhàn)赓U撤場協(xié)議
- 2021版醫(yī)療廢物分類目錄專業(yè)解讀課件
- 樁基工程勞務(wù)分包施工方案
- 衛(wèi)生經(jīng)濟(jì)學(xué)理論知識考核試題及答案
- 反電信詐騙ppt-防范電信詐騙的ppt
- 危險(xiǎn)化學(xué)品倉庫施工方案
- 加法交換律說課課件
- 樁基檢測的環(huán)保措施
- 輪機(jī)概論-大連海事大學(xué)
- 鋼筋計(jì)算截面面積及理論重量
- 基層動物防疫員培訓(xùn)課件
評論
0/150
提交評論