static_cast<>是什么语法
时间: 2024-10-23 16:16:59 浏览: 13
标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
5星 · 资源好评率100%
`static_cast<>` 是C++中的一个类型转换运算符,用于在运行时将一个表达式从一种数据类型安全地转换成另一种数据类型。它主要用于提升、降低或转换基本类型(如int到char),以及指针类型之间的转换(如void*到特定类型的指针)。相比于`dynamic_cast`,`static_cast`不检查类型关系,不会抛出异常,而是直接进行常量表达式的类型转换。
举个例子,如果你有一个double类型的值,想要把它转换为整型(int),你可以这样做:
```cpp
double d = 3.14;
int i = static_cast<int>(d);
```
这里,`static_cast`确保了`d`的小数部分会被截断,而不是进行浮点精度丢失的操作。
对于指针类型转换,比如将基类型指针转换为派生类型指针:
```cpp
Base* basePtr = new Derived(); // 基类指针
Derived* derivedPtr = static_cast<Derived*>(basePtr); // 类型转换
```
在这种情况下,除非`basePtr`确实指向`Derived`类型的对象,否则会进行编译错误检查,因为这不是隐式转换,有明确的风险。
阅读全文