dynamic_cast原理 dynamic-cast可以作为对象继承之间的转换?
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详解
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。