static_cast<>
在 C++ 中是一種用於執行顯式型別轉換的運算子,它在編譯時檢查型別轉換的有效性,比 C 風格的強制轉換(如 (int)x
)提供了更強的型別檢查。
基本型別之間的轉換
用於基本資料型別(如 int、float、double 等)之間的轉換,使得不同型別的資料可以進行操作。
int i = 10; float f = static_cast<float>(i);
型別向上和向下轉換
在類的繼承體系中,static_cast<>
可以用於基類和派生類之間的轉換。
- 向上轉換(Upcasting):將派生類的指標或引用安全地轉換為基類的指標或引用。這種轉換是安全的,因為派生類總是包含基類的部分。
class Base {}; class Derived : public Base {}; Derived d; Base* b = static_cast<Base*>(&d);
- 向下轉換(Downcasting):將基類的指標或引用轉換為派生類的指標或引用。雖然
static_cast<>
支援這種轉換,但它不執行執行時型別檢查(RTTI),因此在執行向下轉換時應謹慎,確保轉換是安全的。
Base b; Derived* d = static_cast<Derived*>(&b); // 危險!