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。

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


月亮给蒙娜丽莎
1 声望0 粉丝

« 上一篇
智能指针
下一篇 »
C++的异常