如何进行智能指针的动态转换

 时间:2026-02-14 01:06:16

1、首先创建一个基类和一个子类,注意定义了Print函数用于测试,并且是虚函数

如何进行智能指针的动态转换

2、定义存储指向子类的基类智能指针变量,然后调用dynamic_pointer_cast转换为类型为子类的智能指针变量

如何进行智能指针的动态转换

3、编译运行输出的打印信息如下,能够正常调用子类的Print函数

如何进行智能指针的动态转换

4、定义存储指向子类的子类智能指针变量,然后调用dynamic_pointer_cast转换为类型为基类的智能指针变量

如何进行智能指针的动态转换

5、调用Print函数,输出的打印信息看,也是正确调用子类的Print函数,需要Print为虚函数,如果Print不是虚函数,那么调用将会是基类的Print函数

如何进行智能指针的动态转换

6、定义存储基类的智能指针变量,然后转换为类型为子类的智能指针变量

如何进行智能指针的动态转换

7、最后从运行打印的结果看,转换后的智能指针为nullptr, 说明本身为基类对象就不能动态转换为子类对象

如何进行智能指针的动态转换

  • 华为音乐完整播放结束后再关闭怎么设置?
  • 领英如何更换头像
  • 什么是企业的“等待的浪费”?
  • 如何为WPS表格的单元格区域定义名称
  • 华为手机如何打开和关闭开发者选项
  • 热门搜索
    关于病毒的手抄报简单又漂亮 关于月球的手抄报 端午节手抄报一等奖 小学安全教育手抄报 端午节的手抄报怎么画 关于热爱祖国的手抄报 爱我家乡手抄报 母亲节手抄报图片 绿色生活手抄报 文明礼仪手抄报资料