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。
子->父对象、指针和引用都支持,这是语法直接支持的,不是类型转换,不会产生临时变量。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。