reinterpert_cast意圖執行低階轉換,實際動作(及結果)可能取決於編譯器,這也就表示它不可移植。例如將乙個 pointer to int 轉型為乙個 int ,這一型別在底層**以外很少見。
示例:
class
a{};
class
b{};
a *a = new a;
b *b = reinterpret(a);
//reinterpret_cast就像傳統的型別轉換一樣對待所有指標的型別轉換
示例:
class base{};
class derived:public base{};
base* a = new base;
derived* b = static_cast
(a);//把父類指標轉換為子類指標
double d = 3.14159265;
int i = static_cast
(d);
示例:
class base
};class derived:public base{};
base* b1 = new derived;
base* b2 = new base;
derived* d1 = dynamic_cast
(b1);//成功
deriver* d2 = dynamic_cast
(b2);//失敗,返回null
示例
class c{};
const c* a = new c;
c* b = const_cast
(a);
C 四種型別轉換方式
c風格的強制型別轉換 type case 很簡單,不管什麼型別的傳統轉換都是 type b type a,但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因為它可以在任意型別之間進行轉換,比如你可以把乙個指向const型別的指標轉換成指向非const型別的指標,把乙個指向基類物件...
C 四種型別轉換方式
static cast 靜態型別轉換。reinterpreter cast 重新解釋型別轉換。dynamic cast 子類和父類之間的多型型別轉換。const cast 去掉const屬性轉換 這應該四種中是最常見的。用法為 static cast expression 該運算子把 express...
C 中四種型別轉換方式
型別轉換有c風格的,當然還有c 風格的。c風格的轉換的格式很簡單 type expression,但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因為它可以在任意型別之間轉換,比如你可以把乙個指向const物件的指標轉換成指向非const物件的指標,把乙個指向基類物件的指標轉換成...