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