static_cast、dynamic_cast、const_cast、reinterpret_cast
1,dynamic_cast
dynamic_cast支持运行时识别指针或引用所指向的对象。
2,const_cast
将转换掉表达式的const性质。
3,static_cast
编译器隐式执行的任何类型转换都可以由static_cast显示完成:
double d = 97.0;
// cast specified to indicate that the conversion is intentional
char ch = static_cast<char>(d);
4,reinterpret_cast
reinterpret_cast 通常为操作数的位模式提供较为低级的重新解释。
注:reinterpret_cast本质上依赖于机器,为了安全地使用reinterpret_cast,要求程序员完全理解所涉及的数据类型,以及编译器实现强制类型转换的细节。
例如:
int *ip;
char *pc = reinterpret_cast<char*>(ip);
程序员必须永远记得pc所指向的真实对象其实式int型,而非字符数组。
每次使用强制类型转换之前,程序员应该仔细考虑是否还有其他不同的方法可以达到同一目的。如果非强制类型不可,则应限制强制类型转换值的作用域,并且记录所有假定涉及的类型,这样能减少错误发生的机会。
浙公网安备 33010602011771号