c++ static_cast显式类型转换

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

 

posted @ 2024-04-05 16:39  Yohoc  阅读(34)  评论(0编辑  收藏  举报