#include
using
namespace
std;
/*
*四種顯示型別轉換
**/
int
main();
class
father:
public
base{};
father f;
base ba=
static_cast
(f);
/*reinterpret_cast型別轉換*/
//基本型別的指標型別轉換
double
c=12.123;
double
* pc=&c;
int
* pi=
reinterpret_cast
<
int
*>(pc);
//不相關的類的指標的型別轉換
class
a{};
class
b{};
a* pa=
new
a;
b* pb=
reinterpret_cast
(pa);
delete
pa;
//指標轉換為整數
int
num=
reinterpret_cast
<
int
>(pc);
//企圖轉換非指標型別的
//b=reinterpret_cast(a); 這條語句是錯誤的
//企圖將const指標轉換為void指標
// const int * pint=0;
// void* pvoid=reinterpret_cast(pint); 錯誤
/* const_cast 型別轉換*/
const
int
* pint=0;
int
* pint1=
const_cast
<
int
*>(pint);
//基於安全性的考慮,下面的轉換是錯誤的
// const int nint=0;
// int nint2=const_cast(nint);
int
* pnum=0;
const
int
* pnum2=
const_cast
<
const
int
*>(pnum);
int
i=0;
//const int i2=const_cast(i); //不能編譯通過
const
int
i2=(
const
int
)i;
//隱式轉換可以編譯通過
return
0;
}
具體的總結請參考《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 允許新增或刪除指標或引用表示式...