c++ static_cast顯式型別轉換

Yohoc發表於2024-04-05

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); // 危險!

相關文章