首页 > 代码库 > C++转型小结
C++转型小结
转型一直不陌生,在java里面用的也比较多,直接"()"一下就搞定了,在C++中,部分转型也可以直接用这种方法搞定,在effective c++中,作者将其归纳为旧式转型。
既然有旧式,那就有新式,新式是形如xx_cast的东西。cast比较纠结,虽然平常用的也还算多,但一直没总结,也就老忘了各自区别和具体用法,接下来大概总结一下。
- const_cast
用来移除对象的常量性(是移除!不是添加),也是唯一具有此功能的转型操作符(C++style)。 - dynamic_cast
用来执行安全向下转型操作,也可以用来判断某个对象是否为另一个对象的派生类。旧式语法无法执行这个操作,缺点是耗费的运行成本比较高。 - static_cast
用来强制隐式转换,如将non-const转为const、将int转为double等。 - reinterpret_cast
用来处理无关类型之间的转换,它会产生一个新的值,这个值会和原始参数有着完全相同的比特位。几乎任何类型的指针之间都可以互相转换,都不会编译错误,但是使用它很容易导致程序的不安全,只有将转换后的类型值转换回到其原始类型,这才是正确使用reinterpret_cast方式。 - (Effective C++中说这个方法一般是在高级语法中才出现,且在目前公司项目中也没看到相应应用,暂时性忽略一下,了解就好)
C++转型小结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。