C++ 類型轉(zhuǎn)換運算符不能直接改變對象類型,它們只能將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型
- 靜態(tài)類型轉(zhuǎn)換(Static Cast):通過在編譯時確定要轉(zhuǎn)換的類型來執(zhí)行轉(zhuǎn)換。它主要用于基本數(shù)據(jù)類型之間的轉(zhuǎn)換(如 int 到 float)和空指針之間的轉(zhuǎn)換。靜態(tài)類型轉(zhuǎn)換的語法如下:
static_cast<TargetType>(expression);
- 動態(tài)類型轉(zhuǎn)換(Dynamic Cast):在運行時確定要轉(zhuǎn)換的類型。它主要用于類層次結構中的對象類型轉(zhuǎn)換。動態(tài)類型轉(zhuǎn)換可以檢查轉(zhuǎn)換是否有效,如果無效,則返回空指針(對于指針類型)或拋出異常(對于引用類型)。動態(tài)類型轉(zhuǎn)換的語法如下:
dynamic_cast<TargetType*>(expression);
- 常量類型轉(zhuǎn)換(Const Cast):用于修改類型的常量性或易變性。它可以添加或刪除類型的常量性和易變性修飾符。常量類型轉(zhuǎn)換的語法如下:
const_cast<TargetType>(expression);
- 重解釋類型轉(zhuǎn)換(Reinterpret Cast):將一種類型的指針轉(zhuǎn)換為另一種類型的指針。這種轉(zhuǎn)換通常是不安全的,因為它不會執(zhí)行任何類型檢查或格式轉(zhuǎn)換。重解釋類型轉(zhuǎn)換的語法如下:
reinterpret_cast<TargetType*>(expression);
請注意,使用這些類型轉(zhuǎn)換運算符時,需要確保轉(zhuǎn)換是合法的,否則可能導致未定義的行為。在進行類型轉(zhuǎn)換時,最好使用C++的類型萃取庫(如std::is_same
、std::is_convertible
等)來檢查類型之間的關系。