C 筆記9 型別強轉 type cast

2021-07-25 12:53:07 字數 1586 閱讀 1931

c++筆記9--型別強轉(type cast)

宣告:本文件由王桂林老師編寫的c++課件,經整理而出。

型別轉換有c風格的,當然還有c++風格的。

c風格的轉換的格式很簡單(typeexpression),但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,

因為它可以在任意型別之間轉換,比如你可以把乙個指向 const 物件的指標轉換成指向非const 物件的指標, 把乙個指向基類物件的指標轉換成指向乙個派生類物件的指標, 這兩種轉換之間的差別是巨大的,

但是傳統的c語言風格的型別轉換沒有區分這些。還有乙個缺點就是,c風格的轉換不容易查詢,他由乙個括號加上乙個識別符號組成,

而這樣的東西在c++程式裡一大堆。所以c++為了克服這些缺點,引進了新的型別轉換操作符。

靜態型別轉換

語法格式:

static_cast《目標型別》 (識別符號)

轉化規則:

在乙個方向上可以作隱式轉換,在另外乙個方向上就可以作靜態轉換。

int a = 10;

int b = 3;

cout<(a)/b<(q);

char *p = static_cast(malloc(100));

重解釋型別轉換

語法格式:

reinterpret_cast《目標型別》 (識別符號)

轉化規則:

通常為運算元的位模式提供較低層的重新解釋」也就是說將資料以二進位制存在形式

的重新解釋,在雙方向上都不可以隱式型別轉換的,則需要重解釋型別轉換。

int main()

; int *q = reinterpret_cast((reinterpret_cast(a) +1));

printf("%x\n",*q);

return 0;

}

脫常型別轉換

語法格式:

const_cast《目標型別》 (識別符號) //目標類型別只能是指標或引用。

語法規則:

用來移除物件的常量性(cast away the constness)使用 const_cast 去除 const 限定的

目的不是為了修改它的內容,使用 const_cast 去除 const 限定,通常是為了函式能夠接受這個實際引數。

應用場景:

#include using namespace std;

void func(int & ref) //別人己經寫好的程式或類庫

動態型別轉換

語法格式:

dynamic_cast《目標型別》 (識別符號)

用於多型中的父子類之間的強制轉化。

9型轉x型 cobol COBOL 資料型別

資料部 data division 是用來定義程式中使用的變數。為了描述cobol中的資料,必須了解以下術語 data name 資料名稱 level number 級數 picture clause 子句 value clause 值子句 01 total students pic9 5 valu...

C 筆記5型別轉換

以下 的開頭 include using namespace std c 型別轉換 原始型別轉換,所有情況都是一種寫法,可讀性不高,有可能有潛在的風險 void func int type case 2 default void func2 char c p void main void func ...

swift 9 型別轉換

型別轉換可以判斷例項的型別,也可以將例項看做是其父類或者子類的例項。型別轉換在 swift 中使用 is 和 as 操作符實現。這兩個操作符提供了一種簡單達意的方式去檢查值的型別或者 轉換它的型別。你也可以用它來檢查乙個類是否實現了某個協議。你可以將型別轉換用在類和子類的層次結構上,檢查特定類例項的...