C++ 程式設計
外觀
static_cast 關鍵字可用於任何型別的正常轉換。依賴於靜態(編譯時)型別資訊的轉換。這包括任何數值型別之間的轉換、指標和引用在層次結構中的向上轉換、使用一元建構函式的轉換以及使用轉換運算子的轉換。對於數值型別之間的轉換,如果當前內容適合新型別,則不會執行執行時檢查。即使一元建構函式被宣告為顯式,也會執行轉換。
- 語法
TYPE static_cast<TYPE> (object);
它還可以將指標或引用向下和跨層次結構轉換,只要這種轉換可用且明確。例如,它可以將 void* 轉換為適當的指標型別,反之亦然。不會執行執行時檢查。
BaseClass* a = new DerivedClass();
static_cast<DerivedClass*>(a)->derivedClassMethod();
- 型別轉換的常用用法
在沒有顯式轉換的情況下對不同資料型別的進行算術運算意味著編譯器必須執行隱式轉換以確保計算中使用的值具有相同的型別。通常,這意味著編譯器會將所有值轉換為具有最高精度的值的型別。
以下是整數除法,因此返回值為 2。
float a = 5 / 2;
要獲得預期的行為,您需要將其中一個或兩個常量強制轉換為 float。
float a = static_cast<float>(5) / static_cast<float>(2);
或者,您需要將其中一個或兩個常量定義為浮點數。
float a = 5f / 2f;