感觉在面试中,总是被问及转换类型问题,所以在大面试来临之前,
复习一下,其实之前也没有怎么区分,因为实际中,特别是编一个小程序,我不是经常在用。
以下是C++的四种转换机制:
view plaincopy to clipboardprint?
const_cast<T> ( expression )
dynamic_cast<T> ( expression )
reinterpret_cast<T> ( expression )
static_cast<T> ( expression )
const_cast通常被用来将对象的常量性质转除。它也是唯一有此功能的C++-Style转型
caozuofu.html" target="_blank">操作符。其意思是将一个const转化为non-const。
dynamic_cast主要用来执行”安全向下转型“,也就是用来决定某对象是否归属继承体系中的某个类型。它也是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。
reinterpret_cast意图执行低级转型,实际动作可能取决编译器,这也就是表明它不可移植。
static_cast用来强迫隐式转换,例如将non-const对象专为const对象,或将int转换成double等等,它也可以用来执行上述多种类型的反向转换,例如将void*指针专为typed指针,将pointer-to-base转为pointer-to-derived。但无法将const转为non-const这个只有const_cast才能做到。
注:文本来自《Effective C++》
-----------------打造高质量的文章 更多关注 把酒泯恩仇---------------
为了打造高质量的文章,请 推荐 一下吧。。。。谢谢了,请关注我后续的文章,会更精彩哦
请关注sina微博:http://weibo.com/baiyang26
把酒泯恩仇官方博客:http://www.ibaiyang.org 【推荐用google reader订阅】
把酒泯恩仇官方豆瓣:http://www.douban.com/people/baiyang26/
如果您想转载本博客,请注明出处
如果您对本文有意见或者建议,欢迎留言