M2 最好使用C 轉型操作符

2021-09-08 20:33:50 字數 514 閱讀 1355

1、c語言中的轉型操作符有兩個問題:

a、是個通用的轉換操作符,也就是說,可以從乙個型別轉換到其他型別。通用必定是低效率和冗餘的,因為要考慮很多情況。

b、在**中,難以辨認出哪些是型別轉換。

2、c++提供了新式的轉換操作符,有static_cast, dynamic_cast, const_cast, reinterpret_cast, 可以認為對不同的型別轉換進行了細化,精確地指出意圖,效率高。另外一方面,很容易在**中辨認出這些型別轉換。

3、考慮,c++新式轉換符的用法。

a、const_cast:去除物件的常量性。

b、dynamic_cast:用於向下轉型或者跨系轉型,型別必須要有虛方法表。轉換是安全的,轉換目標是指標,轉換失敗返回null,轉換目標是引用,丟擲異常。

c、reinterpret_cast:比較特殊,不具移植性。比如:方法指標為 void (*)(int),把方法int f(int) 賦給方法指標,需要型別轉換。

d、其它的情況下,使用static_cast。

2 最好使用C 轉型操作符

舊式的c轉型方式,幾乎允許你將任何型別轉換為任何其它型別,有其自身的缺陷,表現在以下兩方面 不能更精確地指明其轉型的意圖。如將乙個pointer to base class object 轉型為乙個pointer to derived class object 改變乙個物件的型別 和將乙個point...

條款2 最好使用c 轉型操作符

c轉型方式有兩個缺點,一是它幾乎允許將任何型別轉化為任何其他型別,二是它的語法結構難以辨識。為了解決c舊式轉型的缺點,c 匯入4個新的轉型操作符。1.static cast expression static cast基本上擁有與c舊式轉型相同的威力與意義,以及相同的限制。double b 10 i...

C 轉型操作符

解釋四個新型操作符的用途 static cast 基本與擁有與c舊式轉型相同的威力與意義,以及相同的限制。如 計算兩個int型數相除,結果為double型 int firstnum,secondnum double res double firstnum secondnum 舊式c語法 double...