C++ 类型转换
C++风格类型转换(引进以下4种类型转换操作符)
1. static_cast 最常用的类型转换符。
int i; float f;
f = static_cast<float>(i);
2. const_cast 去掉const指针的const属性
const int* data;
int* _data = const_cast<int*>(data);
3. dynamic_cast 用于运行时检查类型转换是否类型安全
1) class A{};
class B{};
//B没有虚拟函数,不可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
2) class A{};
class B{//给类B增加一个虚函数
public:
virtual void b(){}
};
//可以转换
int main(){ A* a = dynamic_cast<A*>(new B); }
4. reinterpret_cast 处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位