dynamic_pointer_cast不是语言关键字,在标准库<memory>中定义,位于std命名空间中,专用于智能指针shared_ptr的转换。可以理解为智能指针领域的dynamic_cast操作符。 总结一下:它们的基本区别,就是dynamci_cast用于裸指针和引用等动态类型的转型,而dynamic_pointer_cast主要用于智能指针的转型。 例子: //注意:dynamic_po...
当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。 向下转换(含智能指针): struct Father { //基类Father }; struct Son:Father { //基类Father的派生类B }; std::shared_ptr<Father> father; std::shared_ptr<Son> son = std::dynamic_pointer_cast<Son>...
dynamic_pointer_cast dynamic_pointer_cast与dynamic_cast⽤法类似,当指针是智能指针时候,向下转换,⽤dynamic_Cast 则编译不能通过,此时需要使⽤dynamic_pointer_cast。智能指针的⽤法可以参考上⼀篇博客。———版权声明:本⽂为CSDN博主「贾作真时真亦贾」的原创⽂章,遵循CC 4.0 BY-SA版权协议,...
当对引用类型转换失败时,程序抛出一个名为std::bad_cast的异常,该异常定义在typeinfo标准库头文件中。 dynamic_pointer_cast dynamic_pointer_cast与dynamic_cast用法类似,当指针是智能指针时候,向下转换,用dynamic_Cast 则编译不能通过,此时需要使用dynamic_pointer_cast。智能指针的用法可以参考上一篇博客。 ——— ...
C++中的dynamic_cast和dynamic_pointer_cast 基类转换为子类,dynamic_cast普通的类,dynamic_pointer_cast为智能指针时。 https://blog.csdn.net/jiayizhenzhenyijia/article/details/98209529
`dynamic_cast` 在运行时检查类型的合法性,如果转换合法,则返回转换后的类型;如果不合法,且用于指针,则返回空指针,用于引用,则抛出 `std::bad_cast` 异常。 二者的主要区别在于它们作用的对象类型: 1. `std::dynamic_pointer_cast` 用于 `std::shared_ptr` 智能指针。 2. `dynamic_cast` 用于原生指针或...
七十八、static_cast和dynamic_cast,static_poonter_cast和dynamic_pointer_cast区别,一、static_cast和dynamic_cast区别:1、static_cast:向上转换,例如:基类向派生类转换2、dynamic_cast:向下转换,例如
下面是dynamic_pointer_cast的语法: dynamic_pointer_cast<DerivedType>(base_pointer); 其中,DerivedType是派生类的类型,base_pointer是基类的智能指针。 使用dynamic_pointer_cast需要注意以下几点: 1. 如果base_pointer所指向的对象实际上不是DerivedType类型的对象,则dynamic_pointer_cast会返回一个空指针。 2. 如果...
现在我们将使用dynamic_pointer_cast函数来将shared_ptr转换为不同类型的智能指针。调用dynamic_pointer_cast中的目标类型以及源类型作为参数。下面是一个例子: std::shared_ptr<void> void_ptr = std::dynamic_pointer_cast<void>(shared_ptr); 在上面的代码中,dynamic_pointer_cast函数将shared_ptr智能指针转换为...