当前位置: 首页 > article >正文

static_cast与dynamic_cast的区别

主要区别如下

(1)作用阶段方面:static_cast在编译时转换;dynamic_cast在运行时检查类型。

(2)转换目标:static_cast用于C语言强制转换可替代方案,可能存在信息丢失,没有运行时类型检查;dynamic_cast用于类继承层次间转换(上行转换,下行转换,类之间的交叉转换)。

(3)类层次的转换:在向上转换时,static_cast和dynamic_cast效果一样,且static_cast效率更高。static_cast是不安全的,dynamic_cast会进行类型检查,转换失败会返回nullptr。

(4)运行时代价:static_cast效率更高。

dynamic_cast原理

        主要基于C++的RTTI(运行时类型检查),RTTI通过type info类型描述器实现,typeid(指针或引用),返回type_info(存于虚函数表中,找到name属性进行比较)。

         注:太深究也挺无聊,知道是从这个方向解释即可。

参考

【英伟达C++一面static_cast与dynamic_cast的区别?dynamic_cast的原理】


http://www.kler.cn/a/445753.html

相关文章:

  • Go 语言常量
  • 免费GIS工具箱:轻松将glb文件转换成3DTiles文件
  • 数据分析实战—鸢尾花数据分类
  • 【自用】通信内网部署rzgxxt项目_01,后端pipeDemo部署(使用nssm.exe仿照nohup)
  • 【Apache Doris】周FAQ集锦:第 26 期
  • 安装opnet14.5遇到的问题
  • 基于蓝牙通信的手机遥控智能灯(论文+源码)
  • 透析Svchost.EXE进程清除木马的最大后门
  • 【算法练习】尺取法
  • pinglunhuifu 页面
  • 使用NodeJs 实现图片转PPT
  • 【实用技能】如何在 SQL Server 中处理 Null 或空值?
  • 基于Spring Boot的高校实验室预约系统
  • 【Unity3D】实现可视化链式结构数据(节点数据)
  • R-CNN算法详解及代码复现
  • 【快速上手Docker 简单配置方法】
  • Java项目--仿RabbitMQ的消息队列--统一硬盘操作
  • RabbitMQ实现网络分区
  • 深度学习推理速度优化指南
  • 《C++版本的“前世今生”与独特魅力》
  • 厦门凯酷全科技有限公司短视频带货可靠吗?
  • 手机便签哪个好用?手机桌面便签app下载推荐
  • SYD881X RTC定时器事件在调用timeAppClockSet后会出现比较大的延迟
  • 解锁看板工具的潜力:企业流程自动化的实践方法
  • Apache 如何监听多个端口 ?
  • 网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时