2016 - 2024

感恩一路有你

dynamic_cast原理 dynamic-cast可以作为对象继承之间的转换?

浏览量:2482 时间:2021-03-17 15:53:43 作者:admin

dynamic-cast可以作为对象继承之间的转换?

动态uucast用于对象的指针和引用。当它用于多态类型转换时,

允许隐式转换和反向转换操作。它类似于静态转换,不同之处在于在相反的转换过程中,动态转换将检查操作的有效性。如果返回的对象不是请求的有效完整对象,则返回null,否则返回有效对象。如果返回的对象是引用,将抛出一个错误的类型转换异常

3.1 static ucast

用法:static ucast< type ID>(exdivsion)

此运算符将exdivsion转换为type ID,但没有运行时类型检查来确保转换的安全性。主要有以下几种用法:

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

执行上行链路转换是安全的(将子类的指针或引用转换为基类表示)。

执行下行链路转换(将基类的指针或引用转换为子类表示)时是不安全的,因为没有动态类型检查。

②用于基本数据类型之间的转换,如将int转换为char和int转换为enum。这种转型的安全性应该由开发商来保证。

③将空指针转换为目标类型的空指针。

④将任何类型的表达式转换为void。

注意:静态uuucast不能转换常量、voltae或uuuuuu未对齐属性。

3.2 dynamic uucast

用法:dynamic ucast< type ID>(exdivsion)

此运算符将exdivsion转换为ID类型的对象。type ID必须是指向类的指针、对类的引用或void*;

如果type ID是类指针类型,则exdivsion也必须是指针。如果type ID是引用,那么exdivsion也必须是引用。

动态转换主要用于类级别之间的上转换和下转换,也可以用于类之间的交叉转换。

当类级别上转换时,动态uucast和静态uuu的效果相同;

在下行转换时,动态uucast具有类型检查功能,比静态uucast更安全。

dynamic_cast原理 static cast 强制转换 dynamic_cast详解

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。