在C++中,有四種類型的cast,分別是static_cast、dynamic_cast、const_cast和reinterpret_cast。
static_cast:用于執行常規的轉換,例如將一個指針或引用從一種類型轉換為另一種類型,或將一種算術類型轉換為另一種類型。static_cast在編譯時執行轉換,因此無法檢查轉換是否有效。
dynamic_cast:主要用于在運行時進行多態類型轉換,只適用于具有虛函數的類的指針或引用。dynamic_cast會檢查轉換是否有效,如果轉換無效,則返回nullptr(對于指針)或拋出std::bad_cast異常(對于引用)。
const_cast:用于去除變量的const屬性或volatile屬性。這種cast可以改變指針或引用的const性質,但是要注意不要破壞const正確性。
reinterpret_cast:用于執行低級別的轉換,例如將一個指針類型轉換為另一種指針類型,或將一個整數類型轉換為指針類型。reinterpret_cast會強制執行轉換,因此可能會導致未定義的行為,應該避免在普通代碼中使用。
以上是C++中四種常見的cast使用方法,根據具體情況選擇適合的cast類型。