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...