1、類型轉(zhuǎn)換
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了做網(wǎng)站、網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),一元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián)建站,貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
static_cast<>():靜態(tài)類型轉(zhuǎn)換,編譯時(shí)C++編譯器會(huì)做類型檢查,在C語(yǔ)言中,隱式類型轉(zhuǎn)換的地方,均可以使用static_cast<>()進(jìn)行類型轉(zhuǎn)換;
reinterpret_cast<>():強(qiáng)制類型轉(zhuǎn)換;編譯器重新解釋;
dynamic_cast
const_cast<>():const char *---> char *,把常量屬性去掉;
(1)、代碼如下:
#includeusing namespace std; class Animal{ public: virtual void cry() = 0; }; class Dog : public Animal{ public: virtual void cry(){ cout<<"汪王"< cry(); //1、有繼承 2、有虛函數(shù)的重寫(xiě) 3、有父類指針指向子類對(duì)象; ===>發(fā)生多態(tài) //dynamic_cast能識(shí)別子類對(duì)象,運(yùn)行時(shí)類型識(shí)別; Dog *pDog = dynamic_cast (base); //是自己類型的,將轉(zhuǎn)換成功,否則返回為NULL; if(pDog){ pDog->doHome(); //讓狗做自己特有的工作; } Cat *pCat = dynamic_cast (base);//父類對(duì)象===>子類對(duì)象,向下轉(zhuǎn)型; if(pCat){ pCat->doThing(); //讓貓做自己特有的工作; } } int main(void){ Dog d1; Cat c1; playObj(&d1); playObj(&c1); //Animal *base = NULL; //base = static_cast (&d1); return 0; } /* int main(void){ double pi = 3.14; int num2 = static_cast (pi); //靜態(tài)類型轉(zhuǎn)換,編譯時(shí)C++編譯器會(huì)做類型檢查,在C語(yǔ)言中,隱式類型轉(zhuǎn)換 的地方,均可以使用static_cast<>()進(jìn)行類型轉(zhuǎn)換; char *p1 = "abcdef"; int *p2 = NULL; //p2 = static_cast (p1); //使用static_cast,編譯器編譯時(shí),會(huì)做類型檢查,若有錯(cuò)誤,提示錯(cuò)誤; p2 = reinterpret_cast (p1);// 強(qiáng)制類型轉(zhuǎn)換;編譯器重新解釋 cout< 運(yùn)行結(jié)果:
(2)、針對(duì)const_cast
(p)的類型轉(zhuǎn)換代碼: #includeusing namespace std; void printBuf(const char *p){ //p[1] = '1'; char *p1 = NULL; p1 = const_cast (p);//const char *---> char *,把常量屬性去掉; p1[0] = 'Z'; cout< 運(yùn)行結(jié)果:
當(dāng)前名稱:C++中四種類型裝換
瀏覽路徑:http://weahome.cn/article/jhhcpp.html