c++类型转换(持续更新)
1. static_cast
static_cast
是 C++ 中的一个类型转换操作符(type cast operator),用于执行静态类型转换。静态类型转换在编译时进行,用于将一种类型的值转换为另一种类型。
static_cast
操作符的语法为:
static_cast<new_type>(expression)
// 实例
double test = 5.5;
int output = static_cast<int>(test); // i = 5
其中 new_type
是要转换的目标类型,expression
是要转换的表达式。
static_cast
可以用于以下情况:
- 基本数据类型之间的转换,例如将
int
类型转换为double
类型。 - 类类型之间的转换,但有限制条件:
- 可以在继承层次结构中进行上行转换(向基类指针或引用的转换)或下行转换(向派生类指针或引用的转换)。
- 可以将指针或引用从void*
转换为任何类型。
- 不能在不同的不相关类型之间进行任意转换。
需要注意的是,使用static_cast
进行类型转换时,编译器不会执行运行时类型检查,因此应确保转换是安全的。如果无法确认转换的安全性,可能需要考虑使用动态类型转换操作符dynamic_cast
等更安全的转换方式。