<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數據加載中……

    有關static_cast,const_cast,dynamic_cast和reinterpret_cast的深入理解

    static_cast:干雜活的,那三個都有各自的專有用途,那三個不做的都由這個轉型符來做,只要它能做的,用C語法的強制類型轉換運算符也一定能夠完成;但話又說回來了,C強制類型轉換能做的,它可不一定都能做,比如去除const性。
    此外在這里聲明一點,一般人都不會清楚都不會注意到的一點,就是四個之中只有它可以用于非指針非引用類型的轉換,其他三個運算符基本上都是專門和指針或者引用打交道的。
    const_static:去除“指針”或“引用”的const、volatile、__unaligned性。很多人都以為用這個運算符就可以讓const這么“固若金湯”的東西“形同虛設”,實則不然,本質上它能做的也就僅僅是為你剝去一層虛假的外殼,如果“被指向”或“被引用”的東西本身就是const的,那任憑你費多大力氣都是徒勞的。一般它都是用在這樣的一套邏輯中:
    int a=34;const int * pcint=&a;int *pint=const_cast<int*>(pcint);*pint=0;這樣就修改了本來是const的指針《該指針要求不能修改它指向的東東》,這里如果改為const int a=34;那么雖然編譯依然能通過,運行依然OK,但是實際上當你用*pint來修改時,你會得到修改后的值為:a依然為34;而*pint確實為0了,但有趣的是此時pint=&a依然成立,雖然pint指向a,但是取出它的值卻不等于a了。至此,希望大家今后不要再誤用const_cast了。
    dynamic_cast:用精煉的語言概括,就是專門用于面向對象中的down cast的。但是有三點是前提:第一,必須用于類和子類之間的轉換;第二,必須用于指針或引用類型的轉換;第三,基類必須有虛函數。
    reinterpret_cast:用于對指針的重新包裝,也就是指針類別之間的轉化,除此之外,還可以用于指針類型和unsigned int類型之間的轉化。

    posted on 2008-07-28 20:20 so true 閱讀(831) 評論(0)  編輯  收藏 所屬分類: C&C++

    主站蜘蛛池模板: 最近免费mv在线观看动漫| 青青久久精品国产免费看| 亚洲欧洲无码一区二区三区| 亚洲av永久无码天堂网| 色老头综合免费视频| 中文字幕无码一区二区免费| 一个人免费日韩不卡视频| 成年黄网站色大免费全看| 女人被男人桶得好爽免费视频| 国产精品免费看香蕉| 国产亚洲精aa成人网站| 亚洲精品高清国产麻豆专区| 天堂亚洲国产中文在线| 产传媒61国产免费| 2022久久国产精品免费热麻豆| 最近2019中文免费字幕| 久久久久无码专区亚洲av| 亚洲视频一区在线| 99亚洲男女激情在线观看| 182tv免费视频在线观看| 美女视频黄免费亚洲| 亚洲精品麻豆av| 1区1区3区4区产品亚洲| 亚洲成a人无码亚洲成www牛牛| 久久av免费天堂小草播放| 免费影院未满十八勿进网站| 男人的天堂亚洲一区二区三区 | a毛片全部免费播放| 亚洲网站在线免费观看| heyzo亚洲精品日韩| 亚洲黄色在线观看网站| 另类图片亚洲校园小说区| 日韩免费无码一区二区三区| 成人国产mv免费视频| 亚洲免费精彩视频在线观看| 亚洲欧美日韩一区二区三区在线| 日韩精品无码免费专区午夜不卡| 成年女人18级毛片毛片免费 | 亚洲精品无码久久一线| 亚洲日韩乱码中文字幕| 日韩免费在线视频|