C 型別轉換運算子

2021-08-09 22:31:00 字數 1173 閱讀 2115

用於(指向派生類物件的)基類指標轉換成派生類指標。

如果轉換失敗,則返回0,即空指標。(通過判斷轉換是否成功,來決定是否用派生類裡的函式(基類中可能沒有那個函式))

class

a {};

class

b : public

a {};

class

c : public

b {};

a* a = new a;

a* b = new b;

a* c = new c;

//指向b(派生類)物件的a(基類)指標轉換成b指標

b* b2 = dymanic_cast(b);

//指向c(派生類)物件的a(基類)指標轉換成c指標,再隱式轉換為c的基類b指標

b* c2 = dymanic_cast(c);

//如果轉換失敗,則為0,可用在if判斷中。下面語句c3指向空指標

c* c3 = dymanic_cast(b);

只能用來去除const或volatile標籤。

用處:函式形參為const指標或引用時,在函式中要改變指向的值時。

int a = 1;

const

int *p = &a;

int *q = const_cast

(p);

*q = 2;//用*q來改變a的值

可以顯示地進行向上轉換(可隱式轉換)和向下轉換。

即,兩個型別中,其中任意乙個型別可以隱式地轉換成另乙個型別,用這個就合法。

int a=10;

//因為int可以隱式(向上)轉換成double,所以下面兩種形式都合法。

double b = static_cast

(a);

int c = static_cast

(b);

進行危險型別轉換(如:指標轉整形)。

可以小記憶體轉大記憶體,不能大記憶體轉小記憶體。

不允許刪除const。

不能將函式指標與資料指標互相轉換。

struct dat;

long val = 0xa224b118;

dat* p = reinterpret_cast

(&val);

c 型別轉換運算子

c 中有4個型別轉換運算子,使裝換過程更規範 dynamic cast type name expression 如果轉型失敗則返回0,即空指標。該運算子的用途是,使得能夠在類層次結構中進行向上轉換 由於 is a關係,這樣的型別轉換時安全的 而不允許其他轉換。二 const cast const ...

C 型別轉換運算子

隱式轉換,是針對不同型別之間的賦值和運算,函式呼叫傳遞引數 這些的轉換都是由編譯器自動完成 char ch int i ch 顯式轉換 由程式設計師在變數前面新增型轉換 char pc char pb void ps void pa 通過上述的兩種方式,c語言大部分的型別轉換都可以順利進行,c 繼承...

C 型別轉換運算子

目錄 dynamic cast static cast const cast reinterpret cast c語言的型別轉換比較自由,但也帶來了一些問題,這些問題大多由程式設計師自行控制和解決。對於龐大的c 語言機制而言,這種簡單粗暴的型別轉換方式顯然是個巨大的負擔,因此c 引入4種型別轉換運算...