青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

攀升·Uranus


Something Different,Something New
數據加載中……

(轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast)

url: http://doserver.net/post/static_cast-const_cast-reinterpret_cast-dynamic_cast.php

非常抱歉,謝謝郭老師的指正,我沒有認真看這個文章就轉過來了,其實他的錯誤太多了,而且還是致命的,對大家不負責任了,請大家諒解!現在是修正版本,基本沒有錯誤了!如果覺得還有問題,請聯系我,謝謝你的關注!
這篇文章其實并不是不才的原創,本來打算自己寫的,但是通過baidu一下,發現有兄弟寫出來了,就干脆摘錄下來,供大家參考使用了!
詳情請看:
  1. 標準c++中主要有四種強制轉換類型運算符:  
  2.   
  3. const_cast,reinterpret_cast,static_cast,dynamic_cast等等。  
  4.   
  5.   
  6.   
  7.   
  8. 1)static_cast<T*>(a)  
  9.   
  10. 將地址a轉換成類型T,T和a必須是指針、引用、算術類型或枚舉類型。  
  11.   
  12. 表達式static_cast<T*>(a), a的值轉換為模板中指定的類型T。在運行時轉換過程中,不進行類型檢查來確保轉換的安全性。  
  13.   
  14.   
  15.   
  16.   
  17. 例子:  
  18.   
  19.   
  20.   
  21.   
  22. class B { ... };  
  23.   
  24. class D : public B { ... };  
  25.   
  26. void f(B* pb, D* pd)  
  27.   
  28. {  
  29.   
  30.    D* pd2 = static_cast<D*>(pb);        // 不安全, pb可能只是B的指針  
  31.   
  32.   
  33.   
  34.   
  35.    B* pb2 = static_cast<B*>(pd);        // 安全的  
  36.   
  37.    ...  
  38.   
  39. }  
  40.   
  41.   
  42.   
  43.   
  44.   
  45.   
  46.   
  47. class B { ... };  
  48.   
  49. class D : public B { ... };  
  50.   
  51. void f(B* pb, D* pd)  
  52.   
  53. {  
  54.   
  55.    D* pd2 = static_cast<D*>(pb);        // 不安全, pb可能只是B的指針  
  56.   
  57.   
  58.   
  59.   
  60.    B* pb2 = static_cast<B*>(pd);        // 安全的  
  61.   
  62.    ...  
  63.   
  64. }  
  65.   
  66.   
  67.   
  68.   
  69.   
  70.   
  71.   
  72. class B { ... };  
  73.   
  74. class D : public B { ... };  
  75.   
  76. void f(B* pb, D* pd)  
  77.   
  78. {  
  79.   
  80.    D* pd2 = static_cast<D*>(pb);        // 不安全, pb可能只是B的指針  
  81.   
  82.   
  83.   
  84.   
  85.    B* pb2 = static_cast<B*>(pd);        // 安全的  
  86.   
  87.    ...  
  88.   
  89. }  
  90.   
  91.   
  92.   
  93.   
  94. 2)dynamic_cast<T*>(a)  
  95.   
  96. 完成類層次結構中的提升。T必須是一個指針、引用或無類型的指針。a必須是決定一個指針或引用的表達式。  
  97.   
  98. 表達式dynamic_cast<T*>(a) 將a值轉換為類型為T的對象指針。如果類型T不是a的某個基類型,該操作將返回一個空指針。  
  99.   
  100.   
  101.   
  102.   
  103. 例子:  
  104.   
  105. class A { ... };  
  106.   
  107. class B { ... };  
  108.   
  109. void f()  
  110.   
  111. {  
  112.   
  113.   A* pa = new A;  
  114.   
  115.   B* pb = new B;  
  116.   
  117.   void* pv = dynamic_cast<A*>(pa);  
  118.   
  119.   // pv 現在指向了一個類型為A的對象  
  120.   
  121.   ...  
  122.   
  123.   pv = dynamic_cast<B*>(pb);  
  124.   
  125.   // pv 現在指向了一個類型為B的對象  
  126.   
  127. }  
  128.   
  129.   
  130.   
  131.   
  132. 3)const_cast<T*>(a)  
  133.   
  134. 去掉類型中的常量,除了const或不穩定的變址數,T和a必須是相同的類型。  
  135.   
  136. 表達式const_cast<T*>(a)被用于從一個類中去除以下這些屬性:const, volatile, 和 __unaligned。  
  137.   
  138.   
  139.   
  140.   
  141. 例子:  
  142.   
  143.   
  144.   
  145.   
  146.   
  147.   
  148.   
  149. class A { ... };  
  150.   
  151. void f()  
  152.   
  153. {  
  154.   
  155.  const A *pa = new A;//const對象  
  156.   
  157.  A *pb;//非const對象  
  158.   
  159.   
  160.   
  161.   
  162. //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象  
  163.   
  164.  pb = const_cast<A*>(pa); // 現在OK了  
  165.   
  166. ...  
  167.   
  168. }  
  169.   
  170.   
  171.   
  172.   
  173.   
  174.   
  175.   
  176. class A { ... };  
  177.   
  178. void f()  
  179.   
  180. {  
  181.   
  182.  const A *pa = new A;//const對象  
  183.   
  184.  A *pb;//非const對象  
  185.   
  186.   
  187.   
  188.   
  189. //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象  
  190.   
  191.  pb = const_cast<A*>(pa); // 現在OK了  
  192.   
  193. ...  
  194.   
  195. }  
  196.   
  197.   
  198.   
  199.   
  200.   
  201.   
  202.   
  203. class A { ... };  
  204.   
  205. void f()  
  206.   
  207. {  
  208.   
  209.  const A *pa = new A;//const對象  
  210.   
  211.  A *pb;//非const對象  
  212.   
  213.   
  214.   
  215.   
  216. //pb = pa; // 這里將出錯,不能將const對象指針賦值給非const對象  
  217.   
  218.  pb = const_cast<A*>(pa); // 現在OK了  
  219.   
  220. ...  
  221.   
  222. }  
  223.   
  224.   
  225.   
  226.   
  227. 4)reinterpret_cast<T*>(a)  
  228.   
  229. 任何指針都可以轉換成其它類型的指針,T必須是一個指針、引用、算術類型、指向函數的指針或指向一個類成員的指針。  
  230.   
  231. 表達式reinterpret_cast<T*>(a)能夠用于諸如char* 到 int*,或者One_class* 到 Unrelated_class*等類似這樣的轉換,因此可能是不安全的。  
  232.   
  233.   
  234.   
  235.   
  236. 例子:  
  237.   
  238. class A { ... };  
  239.   
  240. class B { ... };  
  241.   
  242. void f()  
  243.   
  244. {  
  245.   
  246.   A* pa = new A;  
  247.   
  248.   void* pv = reinterpret_cast<A*>(pa);  
  249.   
  250.   // pv 現在指向了一個類型為B的對象,這可能是不安全的  
  251.   
  252.   ...  
  253.   


posted on 2009-06-22 11:24 攀升 閱讀(3824) 評論(6)  編輯 收藏 引用 所屬分類: C/C++

評論

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast) [未登錄]  回復  更多評論   

Thinking in C++ 第二卷里面也有詳細闡述。Uranus同志,把我的網站加入你的圈子啊,哈哈。
2009-07-06 12:30 | Tim

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast)   回復  更多評論   

@Tim
現在公司項目很緊,每天加班
那天我在給steven說,如果你在的話,我們就無敵了,
無敵三人組呀,因為我們年齡,愛好和思想接近
有點懷念那個時候的我們了?。?!
2009-07-11 16:00 | 攀升

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast)   回復  更多評論   

Thinking in C++ 第二卷里面也有詳細闡述
我找找看
2009-07-11 18:41 | 99網上書城

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast) [未登錄]  回復  更多評論   

@攀升
唉,命運弄人。
看著你和Steven我羨慕啊,公司里面有這么強大的板子讓你們搞Andriod。
想想要是我們三在公司待幾年,自己出來開公司肯定沒問題了。
2009-07-12 16:39 | Tim

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast)   回復  更多評論   

@Tim
別這么說,
你一定要保證一個好的心態,好好養,
下次來上海了一定要喊我,我們一起敘敘。
2009-07-12 20:52 | 攀升

# re: (轉) 總結C++中的所有強制轉換函數(const_cast,reinterpret_cast,static_cast,dynamic_cast) [未登錄]  回復  更多評論   

@攀升
感謝感謝,將來肯定還來上海和你們懷舊的。
我把你博客加到我網站的鏈接上了,鏈接描述我寫的”完顏阿骨打怎么也沒想到他的后代居然搞了IT“,哈哈
2009-07-15 13:29 | Tim
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品福利久久久| 欧美亚洲自偷自偷| 欧美精品九九99久久| 蜜臀91精品一区二区三区| 久久精品亚洲国产奇米99| 久久久国产精品一区二区三区| 亚洲最新合集| 老色批av在线精品| 欧美成人中文字幕在线| 亚洲人永久免费| 日韩视频不卡中文| 亚洲欧美日韩精品在线| 久久裸体视频| 欧美精品一区二区高清在线观看| 欧美精品一卡| 国产视频亚洲| 日韩亚洲在线观看| 久久精品国产免费| 亚洲精品四区| 欧美一区二区女人| 欧美精品一区二区三区高清aⅴ| 国产精品久久久久久久久动漫| 国产日韩欧美黄色| 99视频一区二区| 久久蜜臀精品av| 洋洋av久久久久久久一区| 久久久久国产精品一区三寸| 欧美午夜电影网| 亚洲国产成人在线播放| 香蕉久久夜色精品| 亚洲黄色免费网站| 欧美在线高清| 国产精品久久久久7777婷婷| 亚洲黄色在线看| 久久精品亚洲热| 国产精品99久久不卡二区| 美女在线一区二区| 国产亚洲激情在线| 亚洲欧美电影在线观看| 亚洲国产高清在线观看视频| 欧美制服丝袜第一页| 国产精品一区2区| 亚洲香蕉成视频在线观看| 亚洲激情婷婷| 久久综合久久综合这里只有精品| 国产精品免费看久久久香蕉| 99精品视频免费观看| 欧美日韩亚洲国产精品| 香蕉国产精品偷在线观看不卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频在线一区观看| 欧美大片一区二区三区| 一区二区在线观看视频| 久久久久www| 香蕉免费一区二区三区在线观看| 欧美日韩伊人| 亚洲一区免费看| 中日韩午夜理伦电影免费| 欧美日韩一级黄| 亚洲新中文字幕| 一区二区三区欧美激情| 欧美性天天影院| 亚洲免费伊人电影在线观看av| 一本综合久久| 国产精品美女久久久浪潮软件| 中文一区二区| 亚洲一区二区不卡免费| 国产欧美日韩麻豆91| 久久精品卡一| 麻豆av福利av久久av| 亚洲日本电影在线| 夜夜精品视频| 国产日韩欧美中文在线播放| 久久久国产精品亚洲一区 | 亚洲一区中文| 午夜精品www| 一区在线免费| 亚洲福利视频网| 欧美女同在线视频| 亚洲一区精品在线| 欧美在线视频免费播放| 亚洲激情在线视频| 一区二区三区欧美| 狠狠v欧美v日韩v亚洲ⅴ| 欧美黑人一区二区三区| 欧美日韩在线一区| 久久久久久欧美| 欧美日韩国产成人| 久久香蕉国产线看观看网| 免费看亚洲片| 午夜国产精品影院在线观看| 久久久久久久一区二区| 国产精品99久久99久久久二8| 午夜伦理片一区| 亚洲美女在线一区| 先锋资源久久| 中文国产一区| 免费亚洲一区| 久久精品综合网| 欧美日韩成人综合| 久久免费一区| 国产精品成av人在线视午夜片| 久久久天天操| 欧美日韩国产在线播放网站| 久久全国免费视频| 午夜精品一区二区三区在线视| 91久久综合亚洲鲁鲁五月天| 亚洲大片免费看| 久久婷婷蜜乳一本欲蜜臀| 久久天堂av综合合色| 夜夜爽av福利精品导航| 欧美一区二区久久久| 夜夜嗨网站十八久久| 午夜精品福利一区二区三区av| 亚洲黄色精品| 亚洲欧美日韩高清| 日韩天天综合| 巨胸喷奶水www久久久免费动漫| 亚洲欧美成人一区二区三区| 久久一区亚洲| 久久久精品一品道一区| 欧美网站在线| 亚洲成色精品| 国产综合视频| 亚洲免费在线精品一区| 夜夜嗨av一区二区三区中文字幕 | 欧美不卡在线| 老司机午夜精品视频在线观看| 国产精品视频999| 亚洲精品乱码久久久久久久久| 激情六月婷婷久久| 香蕉久久a毛片| 久久成人在线| 国产日产欧产精品推荐色 | 亚洲电影免费在线观看| 国产亚洲一区精品| 亚洲欧美日韩中文视频| 欧美一区午夜视频在线观看| 国产精品麻豆va在线播放| 日韩视频在线观看| 亚洲先锋成人| 国产精品系列在线播放| 亚洲欧美精品中文字幕在线| 欧美一区二区精品久久911| 国产精品夜色7777狼人| 亚洲欧美在线视频观看| 久久精品国产2020观看福利| 国产一区二区三区日韩| 久久男女视频| 最新日韩精品| 亚洲一区自拍| 国产一区免费视频| 久久综合伊人77777| 亚洲国产视频一区| 亚洲婷婷综合久久一本伊一区| 欧美视频一区二| 欧美一二区视频| 欧美成人精精品一区二区频| 久久米奇亚洲| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩一二三区视频| 国产精品久久亚洲7777| 欧美在线影院| 亚洲国产精品久久精品怡红院| 一区二区三区四区五区视频| 国产精品夜夜夜一区二区三区尤| 午夜国产精品影院在线观看| 欧美成人精品1314www| 亚洲婷婷在线| 国产一在线精品一区在线观看| 久久久午夜视频| 日韩亚洲国产精品| 久久精品在线播放| 一本色道久久综合| 国产一区二区福利| 欧美日韩不卡| 久久久久久久成人| av不卡免费看| 欧美a级片网| 亚洲欧洲av一区二区| 亚洲国产欧美精品| 国产伦精品一区二区三区免费 | 久久se精品一区二区| 亚洲精品久久久久久久久久久久久| 亚洲欧美春色| 亚洲靠逼com| 精品动漫3d一区二区三区免费版| 欧美网站在线观看| 免费看黄裸体一级大秀欧美| 欧美亚洲网站| 亚洲香蕉在线观看| 亚洲人屁股眼子交8| 欧美va亚洲va香蕉在线| 午夜精品国产| 亚洲性感美女99在线| 亚洲日本无吗高清不卡| 黑丝一区二区三区| 国产日韩欧美制服另类| 欧美手机在线| 欧美日韩精品不卡|