显示转换:强制类型转换(cast)

Posted on 2011-06-20 19:32  李立锋  阅读(621)  评论(0)    收藏  举报

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型,而非字符数组。

每次使用强制类型转换之前,程序员应该仔细考虑是否还有其他不同的方法可以达到同一目的。如果非强制类型不可,则应限制强制类型转换值的作用域,并且记录所有假定涉及的类型,这样能减少错误发生的机会。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3