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