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

極品垃圾

初學(xué)VC ,就是把每天所看到的整理到博客,慢慢消化這些內(nèi)容。見(jiàn)證我的學(xué)習(xí)之路吧。很多都是轉(zhuǎn)載。

公告

初學(xué)VC ,就是把每天所看到的整理到博客,慢慢消化這些內(nèi)容。見(jiàn)證我的學(xué)習(xí)之路吧。很多都是轉(zhuǎn)載。
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統(tǒng)計(jì)

  • 隨筆 - 0
  • 文章 - 61
  • 評(píng)論 - 1
  • 引用 - 0

常用鏈接

留言簿(2)

隨筆分類

文章分類(55)

文章檔案(61)

搜索

  •  

最新評(píng)論

使用標(biāo)準(zhǔn)C++的類型轉(zhuǎn)換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。(轉(zhuǎn))

使用標(biāo)準(zhǔn)C++的類型轉(zhuǎn)換符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。

3.1 static_cast
用法:static_cast < type-id > ( expression )     
該運(yùn)算符把expression轉(zhuǎn)換為type-id類型,但沒(méi)有運(yùn)行時(shí)類型檢查來(lái)保證轉(zhuǎn)換的安全性。它主要有如下幾種用法:
①用于類層次結(jié)構(gòu)中基類和子類之間指針或引用的轉(zhuǎn)換。
  進(jìn)行上行轉(zhuǎn)換(把子類的指針或引用轉(zhuǎn)換成基類表示)是安全的;
  進(jìn)行下行轉(zhuǎn)換(把基類指針或引用轉(zhuǎn)換成子類表示)時(shí),由于沒(méi)有動(dòng)態(tài)類型檢查,所以是不安全的。
②用于基本數(shù)據(jù)類型之間的轉(zhuǎn)換,如把int轉(zhuǎn)換成char,把int轉(zhuǎn)換成enum。這種轉(zhuǎn)換的安全性也要開(kāi)發(fā)人員來(lái)保證。
③把空指針轉(zhuǎn)換成目標(biāo)類型的空指針。
④把任何類型的表達(dá)式轉(zhuǎn)換成void類型。

注意:static_cast不能轉(zhuǎn)換掉expression的const、volitale、或者_(dá)_unaligned屬性。


3.2 dynamic_cast
用法:dynamic_cast < type-id > ( expression )
該運(yùn)算符把expression轉(zhuǎn)換成type-id類型的對(duì)象。Type-id必須是類的指針、類的引用或者void *;
如果type-id是類指針類型,那么expression也必須是一個(gè)指針,如果type-id是一個(gè)引用,那么expression也必須是一個(gè)引用。

dynamic_cast主要用于類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換,還可以用于類之間的交叉轉(zhuǎn)換。
在類層次間進(jìn)行上行轉(zhuǎn)換時(shí),dynamic_cast和static_cast的效果是一樣的;
在進(jìn)行下行轉(zhuǎn)換時(shí),dynamic_cast具有類型檢查的功能,比static_cast更安全。
class B{
public:
       int m_iNum;
       virtual void foo();
};

class D:public B{
    public:
       char *m_szName[100];
};

void func(B *pb){
    D *pd1 = static_cast<D *>(pb);
    D *pd2 = dynamic_cast<D *>(pb);
}

在上面的代碼段中,如果pb指向一個(gè)D類型的對(duì)象,pd1和pd2是一樣的,并且對(duì)這兩個(gè)指針執(zhí)行D類型的任何操作都是安全的;
但是,如果pb指向的是一個(gè)B類型的對(duì)象,那么pd1將是一個(gè)指向該對(duì)象的指針,對(duì)它進(jìn)行D類型的操作將是不安全的(如訪問(wèn)m_szName),
而pd2將是一個(gè)空指針。

另外要注意:B要有虛函數(shù),否則會(huì)編譯出錯(cuò);static_cast則沒(méi)有這個(gè)限制。
這是由于運(yùn)行時(shí)類型檢查需要運(yùn)行時(shí)類型信息,而這個(gè)信息存儲(chǔ)在類的虛函數(shù)表(
關(guān)于虛函數(shù)表的概念,詳細(xì)可見(jiàn)<Inside c++ object model>)中,只有定義了虛函數(shù)的類才有虛函數(shù)表,
沒(méi)有定義虛函數(shù)的類是沒(méi)有虛函數(shù)表的。

另外,dynamic_cast還支持交叉轉(zhuǎn)換(cross cast)。如下代碼所示。
class A{
public:
        int m_iNum;
        virtual void f(){}
};

class B:public A{
};

class D:public A{
};

void foo(){
    B *pb = new B;
    pb->m_iNum = 100;

    D *pd1 = static_cast<D *>(pb);    //compile error
    D *pd2 = dynamic_cast<D *>(pb);  //pd2 is NULL
    delete pb;
}

在函數(shù)foo中,使用static_cast進(jìn)行轉(zhuǎn)換是不被允許的,將在編譯時(shí)出錯(cuò);而使用 dynamic_cast的轉(zhuǎn)換則是允許的,結(jié)果是空指針。


3.3 reinpreter_cast
用法:reinpreter_cast<type-id> (expression)
type-id必須是一個(gè)指針、引用、算術(shù)類型、函數(shù)指針或者成員指針。
它可以把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù),也可以把一個(gè)整數(shù)轉(zhuǎn)換成一個(gè)指針(先把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù),
在把該整數(shù)轉(zhuǎn)換成原類型的指針,還可以得到原先的指針值)。

該運(yùn)算符的用法比較多。

3.4 const_cast
用法:const_cast<type_id> (expression)
該運(yùn)算符用來(lái)修改類型的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的類型是一樣的。
常量指針被轉(zhuǎn)化成非常量指針,并且仍然指向原來(lái)的對(duì)象;
常量引用被轉(zhuǎn)換成非常量引用,并且仍然指向原來(lái)的對(duì)象;常量對(duì)象被轉(zhuǎn)換成非常量對(duì)象。

Voiatile和const類試。舉如下一例:
class B{
public:
     int m_iNum;
}
void foo(){
 const B b1;
 b1.m_iNum = 100;            //comile error
 B b2 = const_cast<B>(b1);
 b2. m_iNum = 200;           //fine
}
上面的代碼編譯時(shí)會(huì)報(bào)錯(cuò),因?yàn)閎1是一個(gè)常量對(duì)象,不能對(duì)它進(jìn)行改變;
使用const_cast把它轉(zhuǎn)換成一個(gè)常量對(duì)象,就可以對(duì)它的數(shù)據(jù)成員任意改變。注意:b1和b2是兩個(gè)不同的對(duì)象。

posted on 2009-03-14 13:20 極品垃圾 閱讀(213) 評(píng)論(0)  編輯 收藏 引用 所屬分類: vc

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久免费高清视频| 日韩视频二区| 欧美不卡高清| 久久久综合香蕉尹人综合网| 久久精品国产亚洲精品| 亚洲一区二区三区777| 夜夜嗨网站十八久久| 亚洲精选在线观看| 99pao成人国产永久免费视频| 亚洲精选久久| 亚洲自拍啪啪| 欧美有码视频| 久色成人在线| 亚洲女与黑人做爰| 国产精品99久久99久久久二8 | 亚洲日本电影| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲无限乱码一二三四麻| 一区二区三区黄色| 久久精品国产v日韩v亚洲 | 国产精品剧情在线亚洲| 国产欧美精品在线| 亚洲国产精品电影| 国产精品福利av| 国产综合婷婷| 99精品国产一区二区青青牛奶| 小处雏高清一区二区三区| 久久人人97超碰精品888 | 欧美激情在线狂野欧美精品| 亚洲麻豆一区| 久久亚洲国产精品一区二区 | 亚洲自拍高清| 欧美大片国产精品| 国产欧美日韩精品专区| 亚洲精品孕妇| 亚洲精品欧洲| 久久精品麻豆| 国产精品人人做人人爽| 国内免费精品永久在线视频| 亚洲人成网站影音先锋播放| 欧美一区激情视频在线观看| 亚洲高清毛片| 一区二区三区免费在线观看| 男女激情视频一区| 国产专区综合网| 欧美一级淫片播放口| 日韩午夜激情| 欧美黄色日本| 欧美精品一区二区三区在线播放| 国产偷国产偷亚洲高清97cao| 亚洲一区二区三区四区中文 | 欧美一区视频| 国产欧美精品日韩精品| 亚洲一区在线观看免费观看电影高清| 亚洲大胆视频| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美午夜精品电影| 日韩午夜激情| 欧美黄免费看| 欧美sm视频| 国产精品ⅴa在线观看h| 日韩视频中午一区| 欧美高潮视频| 欧美大学生性色视频| 精品二区视频| 久久久www成人免费无遮挡大片| 亚洲激情精品| 久久久久久久一区二区三区| 国产欧美精品国产国产专区| 亚洲欧美综合v| 一区二区成人精品| 亚洲私人黄色宅男| 欧美资源在线| 国产一区二区三区久久悠悠色av | 91久久在线观看| 久久综合狠狠综合久久综合88| 午夜一区在线| 国产日产欧美精品| 欧美在线视频观看| 日韩亚洲国产欧美| 欧美日韩亚洲一区二区三区在线观看| 91久久久在线| 久久av资源网| 亚洲一区免费看| 国产精一区二区三区| 欧美在线视频不卡| 夜色激情一区二区| 制服丝袜亚洲播放| 日韩视频中午一区| 欧美视频精品一区| 欧美一区二区三区视频在线观看| 欧美成人激情视频| 欧美特黄a级高清免费大片a级| 亚洲一区二区三区视频| 一区二区三区精品视频| 国产欧美69| 免费成人黄色| 噜噜噜噜噜久久久久久91| 亚洲福利视频免费观看| 亚洲国产老妈| 国产精品国产三级国产专播品爱网| 亚洲美女啪啪| 亚洲一区二区三区久久| 国产综合欧美在线看| 欧美激情精品久久久久久久变态| 欧美jizzhd精品欧美喷水| 亚洲一区二区三区免费视频| 亚洲自拍三区| 1769国内精品视频在线播放| 亚洲日韩第九十九页| 国产精品女同互慰在线看| 久久久久久穴| 欧美日韩成人网| 久久国产精品黑丝| 欧美国产日韩二区| 亚洲欧美影院| 老司机免费视频久久| 一区二区三区四区五区在线| 亚洲欧美一区二区原创| 亚洲福利视频专区| 欧美成人精品一区二区三区| 欧美精品导航| 久久精品人人爽| 欧美金8天国| 久久久久久久久伊人| 欧美1区2区| 久久免费精品视频| 国产精品99一区二区| 欧美顶级大胆免费视频| 国产精品久久二区二区| 久久经典综合| 国产精品高潮在线| 欧美激情精品久久久久久| 国产精品欧美日韩一区| 亚洲国产精品传媒在线观看 | 亚洲日产国产精品| 亚洲国产精品成人综合色在线婷婷| 亚洲免费在线电影| 美女爽到呻吟久久久久| 久久久久久穴| 国产乱码精品一区二区三区不卡| 亚洲欧洲一区二区三区| 狠狠色伊人亚洲综合网站色| 一区二区成人精品| 日韩视频免费观看| 久久久久久自在自线| 国产日韩精品一区观看| 伊人久久大香线蕉综合热线| 国产欧美日韩亚洲| 一区二区高清| 一区二区三区欧美激情| 欧美日韩免费一区二区三区| 欧美大胆成人| 亚洲欧美综合另类中字| 欧美一区二区三区久久精品茉莉花| 亚洲精品国产日韩| 亚洲一区日本| 激情视频一区| 亚洲久久一区| 国产区欧美区日韩区| 免费观看30秒视频久久| 欧美日韩一区二区视频在线观看| 亚洲欧美韩国| 欧美凹凸一区二区三区视频| 午夜激情综合网| 欧美成人黑人xx视频免费观看| 亚洲影音先锋| 男人的天堂亚洲在线| 国产精品视频yy9099| 久久久水蜜桃av免费网站| 在线午夜精品| 久久综合色婷婷| 欧美综合77777色婷婷| 欧美激情免费在线| 免费在线观看精品| 国产日本欧美一区二区| 日韩午夜av| 亚洲美女电影在线| 狠狠狠色丁香婷婷综合激情| 亚洲图片你懂的| 日韩视频一区二区三区| 久久久久久久性| 久久免费视频观看| 国产乱码精品一区二区三区五月婷 | 国产亚洲精品bv在线观看| 老鸭窝91久久精品色噜噜导演| 国产精品日本精品| 亚洲毛片播放| 亚洲美女在线看| 日韩天堂在线视频| 欧美风情在线观看| 国内精品写真在线观看| 午夜视频在线观看一区| 午夜精品久久久久久久久久久久久 | 久久精品国产综合精品| 亚洲在线一区二区| 欧美三区美女| 亚洲视频电影图片偷拍一区| 亚洲午夜视频| 国产精品久久影院|