C++的四种类型转换
时间: 2024-11-06 17:10:07 浏览: 8
C++四种类型转换
C++中的类型转换主要有四种方式[^1]:
1. **静态转换**(`static_cast`):这是一种编译时强制类型转换,用于显式地将一种类型转换为另一种类型。例如,从基类转换到派生类。
```cpp
// 示例
int i = 10;
static_cast<double>(i); // 将int转换为double
```
2. **常量转换**(`const_cast`):主要用于消除const限定,允许对常量对象进行非常量操作,但不改变其值。例如,去除数组的const属性。
```cpp
const int arr[] = {1, 2, 3};
const_cast<int*>(arr)[0] = 4; // 去掉const限制,但不会改变原始数组
```
3. **动态转换**(`dynamic_cast`):用于运行时检查并转换指针,通常用于虚继承和多态场景。它能检查类型安全,如果转换失败则返回NULL[^2]。
```cpp
Base* basePtr = new Derived();
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);
```
4. **重新解释转换**(`reinterpret_cast`):这是最底层的类型转换,它不考虑原有类型结构,直接把内存视作指定的新类型。它可以用于不同类型的数据间进行位级操作,如将指针转换成整数。
```cpp
void* ptr = ...;
std::uintptr_t intptr = reinterpret_cast<std::uintptr_t>(ptr);
```
阅读全文