c++四种强制类型转换
时间: 2024-09-19 22:12:01 浏览: 38
在C++中,有四种基本类型的强制类型转换:
1. **隐式类型转换**(Implicit Conversion):这是默认的行为,不需要显式指定。例如,当一个整数赋值给浮点数变量时,编译器会自动进行隐式类型转换。
```cpp
int i = 5;
float f = i; // 隐式类型转换,整型i被转换成float f
```
2. **静态类型转换**(Static Cast):这是一种明确的转换,使用 static_cast 关键字,用于类型之间的安全转换。比如从派生类转换回基类。
```cpp
DerivedClass d;
BaseClass& base = static_cast<BaseClass&>(d); // 将DerivedClass转换为BaseClass引用
```
3. **动态类型转换**(Dynamic Cast):也使用 dynamic_cast,主要用于运行时检查并执行向下转型。如果类型转换失败,会返回空指针而不是引发异常。
```cpp
DerivedClass* derived = new DerivedClass();
BaseClass* base = dynamic_cast<BaseClass*>(derived); // 如果可以成功转换,则base为非空
```
4. **const转换**(Const Cast):允许你临时改变常量表达式的const属性,如将一个const int转换为non-const int。
```cpp
const int ci = 10;
int ni = static_cast<int>(ci); // 尽管ci是常量,但仍能将其转换为非const int
```
阅读全文