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

攀升·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>
            国产视频在线观看一区| 久久亚洲精品中文字幕冲田杏梨 | 老**午夜毛片一区二区三区| 欧美在线欧美在线| 久久久欧美精品sm网站| 久久永久免费| 欧美久久久久免费| 国产麻豆成人精品| 一区一区视频| 一区二区三区四区蜜桃| 欧美一区2区视频在线观看 | 国产精品美女主播| 国产亚洲一区二区在线观看| 精品96久久久久久中文字幕无| 1769国产精品| 亚洲综合大片69999| 蜜桃av一区二区| 日韩视频在线永久播放| 久久成人国产| 欧美精品网站| 国产一区二区在线免费观看| 91久久精品日日躁夜夜躁欧美| 亚洲综合精品一区二区| 欧美成人一区二区在线| 亚洲尤物精选| 亚洲电影下载| 亚洲国产精品综合| 香蕉乱码成人久久天堂爱免费 | 久久久欧美一区二区| 欧美精品国产| 韩日成人在线| 亚洲欧美日韩国产另类专区| 欧美高清不卡在线| 性8sex亚洲区入口| 国产精品高潮呻吟视频 | 欧美在线观看视频一区二区三区| 欧美福利视频在线| 久久xxxx| 国产日韩一区二区三区在线播放| 一区二区三区四区五区在线 | 老鸭窝毛片一区二区三区| 一本大道久久a久久综合婷婷| 久久九九国产精品| 国产欧美精品在线播放| 亚洲伊人一本大道中文字幕| 亚洲欧洲精品成人久久奇米网| 久久er精品视频| 国产欧美亚洲一区| 欧美在线综合| 午夜亚洲性色福利视频| 国产精品igao视频网网址不卡日韩| 91久久精品国产91久久| 欧美国产日韩亚洲一区| 久久久久在线观看| 在线观看亚洲精品| 免费欧美日韩国产三级电影| 久久久久网址| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲欧美精品在线观看| 国产精品久久久久久久久久免费看 | 亚洲精品在线一区二区| 欧美精品一卡| 一区二区三区 在线观看视| 亚洲国产女人aaa毛片在线| 美女精品国产| 夜夜爽夜夜爽精品视频| 亚洲精品美女在线| 欧美手机在线| 久久九九热re6这里有精品| 久久www成人_看片免费不卡| 激情成人亚洲| 91久久久久久国产精品| 欧美日韩在线综合| 亚洲欧美日韩视频二区| 性欧美video另类hd性玩具| 揄拍成人国产精品视频| 亚洲激情国产| 亚洲欧美视频在线| 国产一区二区三区在线观看免费 | 伊人婷婷久久| 久久五月天婷婷| 久久精品视频免费| 亚洲精品乱码久久久久久| 99视频一区二区| 国产亚洲精品一区二555| 老司机午夜精品视频在线观看| 欧美高清日韩| 久久精品国产2020观看福利| 久久一区二区三区av| 99精品国产在热久久| 午夜视频一区| 亚洲美洲欧洲综合国产一区| 亚洲男人天堂2024| 亚洲精品在线电影| 午夜精品一区二区三区在线| 亚洲免费电影在线| 久久久精品日韩欧美| 亚洲欧美日韩国产一区| 免费成人激情视频| 久久er精品视频| 欧美精品在线免费| 久久综合成人精品亚洲另类欧美| 欧美母乳在线| 欧美~级网站不卡| 国产欧美 在线欧美| 亚洲美女中文字幕| 亚洲国产精品一区二区尤物区| 亚洲视频999| 亚洲美女av网站| 久久精品国产96久久久香蕉| 亚洲一区二区三| 欧美激情一区二区三区高清视频 | 美女任你摸久久| 国产精品欧美久久| 亚洲欧洲综合| 亚洲国产1区| 久久精品免费播放| 欧美在线观看视频| 国产精品一区在线观看| 亚洲天堂免费在线观看视频| 宅男精品视频| 欧美日产在线观看| 亚洲人成人一区二区三区| 亚洲国产aⅴ天堂久久| 久久亚洲精品视频| 蜜桃久久av| 亚洲国产第一| 久久夜色撩人精品| 欧美国产日本在线| 亚洲黄色视屏| 欧美国产一区二区| 亚洲精品社区| 亚洲一区影院| 国产精品视频免费一区| 亚洲欧美中文日韩v在线观看| 欧美日韩亚洲一区二| 99热这里只有精品8| 中文欧美日韩| 欧美视频一区在线观看| 亚洲少妇最新在线视频| 午夜一区二区三区不卡视频| 国产精品久线观看视频| 中国成人在线视频| 午夜精品在线| 国产亚洲欧美一区二区| 久久久www免费人成黑人精品 | 亚洲精品自在在线观看| 亚洲深夜福利网站| 国产精品欧美在线| 香蕉久久夜色精品| 免费亚洲电影在线观看| 亚洲精品日韩激情在线电影 | 久久精品一本久久99精品| 欧美成人有码| 亚洲一本大道在线| 国产字幕视频一区二区| 裸体一区二区三区| 日韩一区二区精品葵司在线| 欧美一区二区播放| 伊人久久综合97精品| 欧美国产一区在线| 亚洲一区二区视频| 免费毛片一区二区三区久久久| 亚洲精品国产视频| 国产麻豆日韩欧美久久| 免费日韩精品中文字幕视频在线| 亚洲精品一区二区三区在线观看| 亚洲欧美国产三级| 亚洲国产成人不卡| 欧美视频一区二区三区四区| 久久精品国产成人| 日韩视频在线永久播放| 久久综合999| 亚洲欧美视频一区| 亚洲国产一区视频| 国产精品乱子久久久久| 久久午夜av| 亚洲性色视频| 亚洲国产欧美另类丝袜| 久久精品91久久久久久再现| 亚洲久久一区| 黄色工厂这里只有精品| 国产精品成人观看视频免费 | 欧美电影专区| 午夜国产精品影院在线观看| 亚洲国产婷婷| 国产午夜亚洲精品不卡| 欧美精品一区二区三区很污很色的 | 欧美jizz19hd性欧美| 亚洲主播在线播放| 亚洲美女网站| 亚洲二区在线观看| 国产一区二区电影在线观看| 欧美日韩在线播放| 欧美粗暴jizz性欧美20| 老司机午夜精品视频| 久久国产精品免费一区| 亚洲丝袜av一区| 日韩亚洲一区二区| 亚洲第一久久影院|