C 的四種轉型小結

2021-07-27 19:40:34 字數 887 閱讀 3503

static_cast應該是適用範圍最廣的,適用於很多隱式轉換,基類指標與子類指標的相互轉換,或者新增const屬性,去掉const屬性應該用const_cast

double a = 10.23;

int b = static_cast

(a);

base *ptr = new child();

child ptr2 = static_cast

(ptr);

const base *ptr3 = static_cast

(ptr)

但是需要注意的是,static_cast 在執行基類的指標轉換為派生類的指標時( 即向下轉型),此類轉換並非始終安全。這時應該使用dynamic_cast,如果是向上轉型,則兩者效果相同。

dynamic_cast轉換符只能用於指標或者引用。dynamic_cast轉換符只能用於含有虛函式的類。dynamic_cast轉換操作符在執行型別轉換時首先將檢查能否成功轉換,如果能成功轉換則轉換之,如果轉換失敗,如果是指標則反回乙個0值,如果是轉換的是引用,則丟擲乙個bad_cast異常,所以在使用dynamic_cast轉換之間應使用if語句對其轉換成功與否進行測試,比如pd = dynamic_cast(pb); if(pd)else,或者這樣測試if(dynamic_cast(pb))else。

base *ptr = new base();

child * ptr2 = dynamic_cast

(ptr);

if(!ptr2)

cout

用來將物件的常量性去除

它可以把乙個指標轉換成乙個整數,也可以把乙個整數轉換成乙個指標(先把乙個指標轉換成乙個整數,再把該整數轉換成原型別的指標,還可以得到原先的指標值),或者把一種指標轉為另一種指標

C 的四種轉型操作

舊式轉型的語法結構是由一對小括號加上乙個物件名稱組成 type expression缺點在於 為解決c舊式轉型的缺點,c 匯入了4個新的轉型操作符 static cast const cast dynamic cast reinterpret cast。下面分別介紹 static cast 基本與擁...

C 的四種排序

氣泡排序 using system namespace bubblesorter public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary.length m consol...

C 的四種排序演算法

c 的四種排序演算法 氣泡排序 using system namespace bubblesorter public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary.leng...