• <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>
            C++分析研究  
            C++
            日歷
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345
            統(tǒng)計
            • 隨筆 - 92
            • 文章 - 4
            • 評論 - 4
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

              類型轉(zhuǎn)換在。我們編寫程序時是不可避免的,比如我們分配一個內(nèi)存區(qū)域,它將要存儲的對象類型對編譯器是不可知的。最典型的例子就是void*指針,調(diào)用malloc時會返回一個void*,編譯器并不知道void*指向的對象類型。

              由此可見,類型轉(zhuǎn)換時不可以或缺的!下面我們介紹C++提供的4種顯示類型轉(zhuǎn)換,及繼承自C的類型轉(zhuǎn)換方式(Type)expression。本文的主要內(nèi)容如下:

              寫在前面

              static_cast(exp)顯示轉(zhuǎn)換

              reinterpret_cast(exp)顯式轉(zhuǎn)換

              dynamic_cast(exp)顯示轉(zhuǎn)換

              const_cast(exp)顯示轉(zhuǎn)換

              總結(jié)

              1、寫在前面

              顯示類型轉(zhuǎn)換有時是必需的,如前面提到的void *指針。我們必須將malloc返回的void*指針顯示轉(zhuǎn)換為特定的類型,eg.:int * p=static_cast(malloc(100));還有如果我們想通過一個給定的十六進(jìn)制數(shù)訪問內(nèi)存。這大大方便了我們編程,但同時也帶來了風(fēng)險,用得不好將成為很多錯誤的根源!如你通過一個十六進(jìn)數(shù)去訪問內(nèi)存可能會導(dǎo)致程序崩潰;如你內(nèi)存轉(zhuǎn)換時可能會截斷原有數(shù)據(jù)…… www.liuhebao.com

              因此我們在類型轉(zhuǎn)換時必須得小心。

              2、static_cast(exp)顯示轉(zhuǎn)換

              static_cast類型轉(zhuǎn)換用于相關(guān)類型之間的轉(zhuǎn)換,諸如:在同一個類的繼承層次關(guān)系中,向上或向下轉(zhuǎn)換;枚舉類型與整數(shù)類型之間的轉(zhuǎn)換;浮點類型與指數(shù)類型之間的轉(zhuǎn)換。

              在這4中類型轉(zhuǎn)換中,static_cast是最接近C-style的了。

              3、reinterpret_cast(exp)顯式轉(zhuǎn)換

              字面理解即re-interpret,重新解析(釋)的意思。故名思意,它主要用于不相關(guān)類型之間的轉(zhuǎn)換,好一個英文單詞在不同的上下文中,詞性和詞義可能完全不同。它為不同類型之間轉(zhuǎn)換帶來的便利,但是也伴隨著風(fēng)險的,如將一個十六進(jìn)制整數(shù)轉(zhuǎn)換為內(nèi)存地址(由int-->指針類型,這兩種類型完全不關(guān)聯(lián))。既然是用于不相關(guān)類型之間的轉(zhuǎn)換,也就意味著編譯器不會做太多的確認(rèn)和承諾。 www.yzyedu.com

              reinterpret_cast方式還有一個特點就是:目標(biāo)和原始值之間至少有相同的位數(shù),我們可以將轉(zhuǎn)換之后的值再轉(zhuǎn)換回去,而不像其它3種類型可能會導(dǎo)致精度丟失。

              4、dynamic_cast(exp)顯示轉(zhuǎn)換

              一種運行時(run-time)檢測的類型轉(zhuǎn)換,因此轉(zhuǎn)換可能需要較大的運行時代價,這種類型也是用C-style是無法實現(xiàn)的。主要用于執(zhí)行類型向下轉(zhuǎn)換和繼承之間的轉(zhuǎn)換。

              5、const_cast(exp)顯示轉(zhuǎn)換

              用于消除變量的const限定,轉(zhuǎn)換之后的變量就不再具有“const”了,如果是一個const指針的話,轉(zhuǎn)換之后可以改變指向而指向其它對象。 www.yzjxsp.com

              6、總結(jié)

              用C-style的(Type)expression的格式轉(zhuǎn)換,可以用我們上面介紹的4種方式來替代。雖然中可以使用C-style的形式仍可用,但更加建議使用上面的4中類型。因為C-style的類型轉(zhuǎn)換更加危險:

              在一個大型程序中更難定位和識別

              哪種類型轉(zhuǎn)換并不明顯

              而用上面的四種方式可以更加準(zhǔn)確地定位哪種類型轉(zhuǎn)換發(fā)生了錯誤。

            posted on 2011-03-21 00:50 HAOSOLA 閱讀(218) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


             
            Copyright © HAOSOLA Powered by: 博客園 模板提供:滬江博客
            PK10開獎 PK10開獎
            亚洲AV乱码久久精品蜜桃| 久久久久久a亚洲欧洲aⅴ| 欧美久久天天综合香蕉伊| 久久国产一片免费观看| 欧美日韩精品久久久久| 日本强好片久久久久久AAA | 97精品依人久久久大香线蕉97| 久久精品人妻中文系列| 18岁日韩内射颜射午夜久久成人| 亚洲人成网站999久久久综合| 久久国产精品77777| 中文字幕精品久久久久人妻| 久久91综合国产91久久精品| 久久精品国产第一区二区| 人妻无码中文久久久久专区| 欧美久久天天综合香蕉伊| 国内精品伊人久久久久AV影院| 亚洲国产香蕉人人爽成AV片久久 | 26uuu久久五月天| 亚洲AV日韩AV永久无码久久| 久久露脸国产精品| 国产精品久久久天天影视香蕉| 日日躁夜夜躁狠狠久久AV| 久久久久久国产精品美女| 久久综合久久综合久久综合| 亚洲AV日韩精品久久久久 | 久久精品毛片免费观看| 性高湖久久久久久久久AAAAA| 99久久99久久精品国产| 久久久久久久综合日本亚洲| 浪潮AV色综合久久天堂| 亚洲中文久久精品无码| 久久亚洲AV成人无码| 伊人久久亚洲综合影院| 精品综合久久久久久88小说| 成人精品一区二区久久| 久久久青草青青国产亚洲免观| 久久天天躁狠狠躁夜夜2020老熟妇 | 久久国产影院| 香蕉99久久国产综合精品宅男自| 久久最新免费视频|