日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++顯式轉(zhuǎn)換中幾種不同的轉(zhuǎn)換方式

我們在上一篇文章中為大家詳細介紹了C++隱式轉(zhuǎn)換發(fā)生的四種情況,相信大家應(yīng)該會對這一數(shù)據(jù)類型轉(zhuǎn)換方式有一個詳細的了解啦。那么在這里,將會為大家詳細介紹其中的另一種轉(zhuǎn)換方式,C++顯式轉(zhuǎn)換的基本內(nèi)容。#t#

專業(yè)領(lǐng)域包括做網(wǎng)站、成都做網(wǎng)站、成都做商城網(wǎng)站、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。

C++顯式轉(zhuǎn)換包含四種轉(zhuǎn)換

static_cast : 編譯期的轉(zhuǎn)化,不能轉(zhuǎn)換掉exdivssion的const、volitale、或者__unaligned屬性

*所有內(nèi)建類型對象之間的隱式轉(zhuǎn)換都可用static_cast.

*把空指針轉(zhuǎn)換成目標類型的空指針用static_cast。

*把任何類型的表達式轉(zhuǎn)換成void類型用static_cast。

*類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換也可以用static_cast,但下行轉(zhuǎn)換即當把基類指針或引用轉(zhuǎn)換成子類表示時,由于沒有動態(tài)類型檢查,所以是不安全的.反之是安全的.

dynamic_cast : 運行期的轉(zhuǎn)換,類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換

* dynamic_cast具有類型檢查的功能,下行轉(zhuǎn)換的效果跟static_cast是一樣的,但下行轉(zhuǎn)換比static_cast更安全。

* dynamic_cast還支持交叉轉(zhuǎn)換,兩個類如果有共同的祖先,他們的指針就可以用dynamic_cast.

const_cast : 編譯期的轉(zhuǎn)化,類型中的常量

reinterpret_cast : 任何指針都可以轉(zhuǎn)換成其它類型的指針,可用于如char* 到 int*,或者One_class* 到 Unrelated_class* 等的轉(zhuǎn)換,因此可能是不安全的。

C++內(nèi)建類型指針之間不含有隱式轉(zhuǎn)換(void * 除外),需要C++顯式轉(zhuǎn)換。

 
 
 
  1. int ival = 0;  
  2. char* pc = NULL;  
  3. int* pi = NULL;  
  4. void* pv = NULL;  
  5. const char* pcc = "Hello world";  
  6. const int* pci = &ival;  
  7. const void* pcv = NULL;  
  8. pc = pi; //錯誤,沒有標準的隱式轉(zhuǎn)換.  
  9. pc = reinterpret_cast(pi); 
    //必須使用reinterpret_cast 在位模式層次的顯式轉(zhuǎn)換  
  10. pc = pv; //錯誤,沒有標準的隱式轉(zhuǎn)換.  
  11. pc = static_cast(pv); //static_cast顯式轉(zhuǎn)換  
  12. pc = pcc; //錯誤,沒有標準的隱式轉(zhuǎn)換.  
  13. pc = const_cast(pcc); //const_cast顯式轉(zhuǎn)換  
  14. pc = pcv; //錯誤,沒有標準的隱式轉(zhuǎn)換.  
  15. pc = static_cast(const_cast(pcv)); 
    //先const_cast 后 static_cast.  
  16. pv = pc; // OK; 隱式轉(zhuǎn)換到void*  
  17. pv = pi; // OK; 隱式轉(zhuǎn)換到void*  
  18. pv = pcc; //錯誤,沒有標準的隱式轉(zhuǎn)換.  
  19. pv = const_cast(pcc); 
    //OK, const_cast顯式轉(zhuǎn)換,并且char* 隱式轉(zhuǎn)換到void*  
  20. pv = pcv;//錯誤,沒有標準的隱式轉(zhuǎn)換.  
  21. pv = const_castpcv;//OK, const_cast顯式轉(zhuǎn)換.  
  22. pcpcc = pc; // OK; 隱式轉(zhuǎn)換到const char*  
  23. pcc = pi; // 錯誤,沒有標準的隱式轉(zhuǎn)換.  
  24. pcc = reinterpret_cast(pi); 
    //必須使用reinterpret_cast 在位模式層次的顯式轉(zhuǎn)換.  
  25. pcc = pv; // 錯誤,沒有標準的隱式轉(zhuǎn)換.  
  26. pcc = static_cast(pv); //static_cast顯式轉(zhuǎn)換  
  27. pcc = pci;// 錯誤,沒有標準的隱式轉(zhuǎn)換.  
  28. pcc = reinterpret_castpci; 
    //必須使用reinterpret_cast 在位模式層次的顯式轉(zhuǎn)換.  
  29. pcc = pcv;//錯誤,沒有標準的隱式轉(zhuǎn)換.  
  30. pcc = static_cast(pcv); //static_cast顯式轉(zhuǎn)換.  
  31. pcv = pv; // OK; 隱式轉(zhuǎn)換到const void*  
  32. pcpcv = pc; // OK; 隱式轉(zhuǎn)換到const void*  
  33. pcv = pi; // OK; 隱式轉(zhuǎn)換到const void*  
  34. pcv = pcc;// OK; 隱式轉(zhuǎn)換到const void* 

以上就是對C++顯式轉(zhuǎn)換的一些基本介紹。


文章名稱:C++顯式轉(zhuǎn)換中幾種不同的轉(zhuǎn)換方式
當前URL:http://www.dlmjj.cn/article/djojpgh.html