C 中四種顯示型別轉換總結

2021-09-23 21:27:23 字數 2708 閱讀 4170

#include

usingnamespacestd;

/*

*四種顯示型別轉換

**/

intmain();

classfather:publicbase{};

father f;

base ba=static_cast(f);

/*reinterpret_cast型別轉換*/

//基本型別的指標型別轉換

doublec=12.123;

double* pc=&c;

int* pi=reinterpret_cast<int*>(pc);

//不相關的類的指標的型別轉換

classa{};

classb{};

a* pa=newa;

b* pb=reinterpret_cast(pa);

deletepa;

//指標轉換為整數

intnum=reinterpret_cast<int>(pc);

//企圖轉換非指標型別的

//b=reinterpret_cast(a);  這條語句是錯誤的

//企圖將const指標轉換為void指標

//  const int * pint=0;

//  void* pvoid=reinterpret_cast(pint);   錯誤

/* const_cast 型別轉換*/

constint* pint=0;

int* pint1=const_cast<int*>(pint);

//基於安全性的考慮,下面的轉換是錯誤的

//  const int nint=0;

//  int nint2=const_cast(nint);

int* pnum=0;

constint* pnum2=const_cast<constint*>(pnum);

inti=0;

//const int i2=const_cast(i); //不能編譯通過

constinti2=(constint)i;//隱式轉換可以編譯通過

return0;

}

具體的總結請參考《c++ stl開發技術導引.pdf 》第1.6小節。

C 四種強制型別轉換總結

1.static case強制型別轉換 用於基本型別間的轉換,但不能用於基本型別指標間的轉換 用於有繼承關係類物件之間的轉換和類指標之間的轉換 如 int main 2.reinterpret cast強制型別轉換 用於指標型別間的型別轉換 用於整數和指標型別間的強制轉換 如 typedef voi...

四種C 型別轉換

1 static cast 用法 static cast type id expression 該運算子把expression轉換為type id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法 用於類層次結構中基類和子類之間指標或引用的轉換。進行上行轉換 把子類的指標或引用轉換成...

C 中四種強制型別轉換

c 同時提供了四種新的強制轉型形式 通常稱為新風格的或 c 風格的強制轉型 dynamic cast expression reinterpret cast expression static cast expression const cast const cast 允許新增或刪除指標或引用表示式...