再看C++类型转换
时间:2010-08-30 来源:chinazhangjie
很久以前曾经总结过这个问题(http://www.cnblogs.com/chinazhangjie/archive/2010/08/19/1803051.html)。
今天看了《More Effective C++》之后,再补充几点。
1、const_cast用于类型转换掉表达式的const或volatileness属性。
如果你试图使用const_cast来完成修改constness或者volatileness属性之外的事情,你的类型将被拒绝。
2、dynamic_cast用于安全地沿着类的继承关系向下进行转换。这就是说,你能用dynamic_cast把指向基类
的指针或引用转换成指向其派生类或兄弟类的指针或引用,而且你知道转换是否成功。失败的转化将返回空指针
(当对指针进行类型转换时)或者抛出异常(当对引用进行类型和转换时)。
3、reinterpret_cast最普通的用途就是在函数指针类型之间进行转换。使用reinterpret_cast的代码很难移植
(因为,使用这个操作符的类型转换,其的转换结果几乎都是执行期定义(implementation-defined))
参考书籍:《More Effective C++》
相关阅读 更多 +