static_cast、 dynamic_cast、reinterdivt_cast、和const_cast

使用标准C++的类型转换符:static_cast、 dynamic_cast、reinterdivt_cast、和const_cast。

1.static_cast

用法:static_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:

1.用于类层次结构中基类和子类之间指针或引用的转换。

进行上行转换(把子类的指针或引用转换成基类表示)是安全的;   

进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。

2.用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。

3.把空指针转换成目标类型的空指针。

4.把任何类型的表达式转换成void类型。 注意:static_cast不能转换掉exdivssion的const、volitale、或者__unaligned属性。

2.dynamic_cast

用法:dynamic_cast < type-id > ( exdivssion ) 该运算符把exdivssion转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *; 如果type-id是类指针类型,那么exdivssion也必须是一个指针,如果type-id是一个引用,那么exdivssion也必须是一个引用。 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的; 在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。

原文链接: https://www.cnblogs.com/mumutou/archive/2010/09/03/1816972.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    static_cast、 dynamic_cast、reinterdivt_cast、和const_cast

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/14645

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午2:22
下一篇 2023年2月7日 下午2:22

相关推荐