C++的强制类型转换

月亮给蒙娜丽莎 / 93 /

ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz

C++有了四个强制类型转化的操作符。

1、static_cast

之前C语言会发生的隐式类型转化用此操作符,它适用于意义相近的类型之间的相互转化。

double d = 1.11;
int a = static_cast<int>(d);

2、reinterpret_cast

用于无关类型的相互转换。

int a = 10;
int *p = reinterpret_cast<int*>(a);

3、const_cast

用于需要取消const属性的类型转换。

const int a = 2;
int *p = const_cast<int*>(&a);
*p = 3;

//*p 3,a 2的原因是cout<<a的值不是在内存里面取得,而是被编译器做了优化。
//volatile const int a = 2;这样就没有问题了,a的const属性没了,a变成了3

4、dynamic_cast

用于父->子指针和引用的转换。它会先检查是否安全,不安全就返回nullptr。

子->父对象、指针和引用都支持,这是语法直接支持的,不是类型转换,不会产生临时变量。


作者
月亮给蒙娜丽莎
许可协议
CC BY 4.0
发布于
2023-09-19
修改于
2024-04-09
Bonnie image
尚未登录