国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C++ 類型轉(zhuǎn)換
C++ 類型轉(zhuǎn)換
2008-07-24 11:05
 
************ 一、隱式類型轉(zhuǎn)換 *************
C++語言為內(nèi)置類型定義了一套隱式類型轉(zhuǎn)換。隱式類型轉(zhuǎn)換有如下情形:

1、在混合類型的算術(shù)表達(dá)式中,所有類型會(huì)向最寬的類型轉(zhuǎn)換。這被稱為算術(shù)類型轉(zhuǎn)換。
    算數(shù)轉(zhuǎn)換包括兩種形式:
    a、如果可能,所有類型都將提升為最寬的類型已避免數(shù)據(jù)損失;
    b、只要表達(dá)式中包含的都是整數(shù)類型,則均先提升小于int的整型為int再進(jìn)行其他轉(zhuǎn)換或計(jì)算;

2、在賦值表達(dá)式中,被賦值的類型(‘=’左邊的操作數(shù))將作為目標(biāo)轉(zhuǎn)換類型。
    這時(shí)候由于目標(biāo)轉(zhuǎn)換類型不一定是整個(gè)表達(dá)式中最寬的數(shù)據(jù)類型,因此可能會(huì)產(chǎn)生數(shù)據(jù)損失,因此一般編譯器會(huì)給出個(gè)warning。
    賦值表達(dá)式有多種表現(xiàn)形式,如下:
    a、直接的’=‘賦值語句;
    b、將表達(dá)式作為參數(shù)傳遞給函數(shù)時(shí),這時(shí)候函數(shù)的形參可以看作‘=’左邊的操作數(shù),實(shí)際參數(shù)作為‘=‘右邊的操作數(shù)
    c、函數(shù)體return語句將表達(dá)式返回式,這時(shí)候函數(shù)名作為’=‘左邊的操作數(shù),返回的表達(dá)式為右邊的操作數(shù)。

3、類型大小關(guān)系:
    unsigned > signed;
    long double > double > float > integral types;
    unsigned long > long / int > bool,unsigned char, signed char,char,w_char, short int;
   
    注:unsigned short int與int的大小關(guān)系與機(jī)器有關(guān), unsigned int與long的大小關(guān)系與機(jī)器有關(guān);

當(dāng)int不足以代表所有unsigned short int值時(shí),兩者均轉(zhuǎn)化為unsigned int;當(dāng)long不足以代表所有unsigned int值時(shí),兩者均轉(zhuǎn)換為unsigned long。

    枚舉類型用能代表所有枚舉值的最小的整型類型存儲(chǔ)。
   

************ 二、顯式類型轉(zhuǎn)換 *************

語法:const_name<type>(expr);

1、const_cast
     去除表達(dá)式的const/volatile屬性。一般用于去除指針的const屬性。
  
    例如:
    const int a = 5;
    const int * ptr = &a;
    int * ptr1 = const_cast<int *>(ptr);      // okay!!
    *ptr1 = 8;
    cout << *ptr1 << endl;
    cout << *ptr << endl;

    int b = const_cast<int>(a);   //error C2440: 'const_cast' : cannot convert from 'const int' to 'int'  
    cout << b << endl;     
}

2、static_cast
    標(biāo)準(zhǔn)轉(zhuǎn)換基本上都可以用static_cast來實(shí)現(xiàn)。具體有如下用法:
    a、將編譯器執(zhí)行的隱式轉(zhuǎn)換顯示化;
    b、或?qū)oid*轉(zhuǎn)換為顯式類型的指針;
    c、將算術(shù)值轉(zhuǎn)換為枚舉值;
    d、將基類(或基類指針/引用)轉(zhuǎn)化為派生類(或派生類指針/引用)
    其中,b、c、d存在潛在的危險(xiǎn);a存在潛在的數(shù)據(jù)損失。

3、reinterpret_cast
    對(duì)操作數(shù)進(jìn)行低級(jí)別的bit模式的重翻譯,其正確性完全由編程者掌控,編譯器不負(fù)任何責(zé)任。
    推薦使用reinterpret_cast來實(shí)現(xiàn)所有指針的顯示轉(zhuǎn)換操作。

4、舊風(fēng)格的顯示轉(zhuǎn)換語法:
    a、C++函數(shù)風(fēng)格:type_name(expr)
    b、C語言風(fēng)格:(type_name)expr
    舊的顯示轉(zhuǎn)換風(fēng)格,可以實(shí)現(xiàn)所有上述三種顯示轉(zhuǎn)換方式的功能。但由于其潛在的危險(xiǎn)更難于跟蹤,因此不推薦使用。

5、dynamic_cast

************************ 三、自定義類型轉(zhuǎn)換 **************************
自定義的類型轉(zhuǎn)換有兩種,一種是通過"類型轉(zhuǎn)換函數(shù)" (hi.baidu.com/cosmicocean/blog/item/4b5e47af46f678fdfaed5038.html)
另一種是通過" 單參數(shù)的構(gòu)造函數(shù)" 。

實(shí)際程序中,用戶可以顯示的指明某一個(gè)轉(zhuǎn)換所采用的類型轉(zhuǎn)換方式,若編譯器允許這種轉(zhuǎn)換(內(nèi)置允許或用戶自定義了該轉(zhuǎn)換方式),則進(jìn)行轉(zhuǎn)換操作。用戶沒有顯示指明時(shí),編譯器將根據(jù)的情況選擇是否能進(jìn)行隱式轉(zhuǎn)換。下面闡述隱式轉(zhuǎn)換相關(guān)的內(nèi)容:

實(shí)際程序中,原類型需要轉(zhuǎn)換為目標(biāo)類型時(shí),有內(nèi)置轉(zhuǎn)換(lval->rval / promotion / standard conversion)則直接轉(zhuǎn)換;否則,若類型轉(zhuǎn)換函數(shù)轉(zhuǎn)換的類型就是目標(biāo)類型,則編譯器會(huì)隱式的調(diào)用該函數(shù)進(jìn)行轉(zhuǎn)換;否則,編譯器將結(jié)合用戶自定義轉(zhuǎn)換與標(biāo)準(zhǔn)轉(zhuǎn)換序列,以達(dá)到目標(biāo)類型。
最后一種情況實(shí)際上是如下形式的轉(zhuǎn)換序列:
Standard Conversion Sequence ->User-defined Conversion ->Standard Conversion Sequence
(注意,序列中只能包含一個(gè)用戶自定義的轉(zhuǎn)換)
有時(shí)候,可以有不同的轉(zhuǎn)換序列能實(shí)現(xiàn)原類型到目標(biāo)類型的轉(zhuǎn)換,編譯器需要挑選出最好的一個(gè)序列進(jìn)行隱式類型轉(zhuǎn)換。

1、類型轉(zhuǎn)換函數(shù)
    含有類型轉(zhuǎn)換函數(shù)的轉(zhuǎn)換序列為:User-defined Conversion->Standard Conversion Sequence。

2、構(gòu)造函數(shù)
    含有構(gòu)造函數(shù)的轉(zhuǎn)換序列為:Standard Conversion Sequence->User-defined Conversion.

3、最佳選擇
    不論含有上述哪種用戶自定義的轉(zhuǎn)換,若有多個(gè)序列可以完成轉(zhuǎn)換,標(biāo)準(zhǔn)轉(zhuǎn)換序列的等級(jí)將決定選擇那種轉(zhuǎn)換;若幾個(gè)序列優(yōu)先級(jí)相同,則該轉(zhuǎn)換為ambiguous,編譯器無法完成轉(zhuǎn)換。
 
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C語言隱式類型轉(zhuǎn)換規(guī)則
C語言中數(shù)值類型轉(zhuǎn)換
Explicit
C++類型轉(zhuǎn)換
C ++ 類型轉(zhuǎn)換
【C 札記】C 中的類型轉(zhuǎn)換
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服