C++类型转换

static_cast 相近类型之间的类型

reinterpret_cast 不相近类型之间的类型

const_cast 去掉对象const属性的转换

dynamic_cast 规范向下转换,转换是安全的 是将一个基类对象指针(或引用)转换到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理。 C++独有

若对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针;
若对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。

【注意】:
1、dynamic_cast在将父类cast到子类时,父类必须要有虚函数,否则编译器会报错。
2、 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。
在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全

Original: https://www.cnblogs.com/LonelyMoNan/p/16749451.html
Author: lemon-Breeze
Title: C++类型转换

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606470/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 实验一 密码引擎-4-国䀄算法交叉测试

    任务详情 0 2人一组,创建一个文件,文件名为小组成员学号,内容为小组成员学号和姓名1 在Ubuntu中使用OpenSSL用SM4算法加密上述文件,然后用龙脉eKey解密,提交代码…

    Linux 2023年6月8日
    088
  • IOC Unity

    控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Depende…

    Linux 2023年6月13日
    092
  • Spring5新特性—Log4j2

    Spring5新特性—Log4j2 Spring5新特性—Log4j2 创建一个Maven项目,导入依赖 org.apache.logging.log4j log4j-core 2…

    Linux 2023年6月14日
    082
  • ES查询区分大小写

    ES查询在默认的情况下是不区分大小写的,在5.0版本之后将 string类型拆分成两种新的数据类型, text用于全文搜索(模糊搜索), keyword用于关键字搜索(精确搜索)。…

    Linux 2023年6月8日
    098
  • 复习刷题7.23-Java开发

    基本上是每天学一点点 在复习的同时,发现好多之前没学过的,底层基础是真的重要(主要是算法不行(x))。开始狂补了要。 书:图解http,Java编程思想,疯狂Java讲义,计算机网…

    Linux 2023年6月7日
    064
  • mysql join语句的执行流程是怎么样的

    mysql join语句的执行流程是怎么样的 join语句是使用十分频繁的sql语句,同样结果的join语句,写法不同会有非常大的性能差距。 select * from t1 st…

    Linux 2023年6月8日
    087
  • 安卓开发封装处理Retrofit协程请求中的异常

    上篇文章讲解了怎么使用 Kotlin的协程配合 Retrofit发起网络请求,使用也是非常方便,但是在处理请求异常还不是很人性化。这篇文章,我们将处理异常的代码进行封装,以便对异常…

    Linux 2023年6月8日
    089
  • SQLI-LABS(Less-8)

    Less-8(GET-Blind-Boolean Based-Single Quotes) 打开 Less-8页面,可以看到页面中间有一句 Please input the ID …

    Linux 2023年6月6日
    079
  • 【科研数学】概率论,线性代数,高等数学、离散数学和数值分析;计算机应用数学;机器学习,深度学习,强化学习;

    本科过去了很久,中间也没经历考研,硕士期间又一直在系统方向做工作,数学知识忘记了很多; 现在读博了,做 System for AI、调度,以及一些最优化的问题,都会涉及到数学的内容…

    Linux 2023年6月13日
    081
  • 对象缓存服务的思考和实现

    写在前面 目前在很多业务中,存储都大量的依赖了云存储,比如阿里云的 oss、华为云的 obs 等。但是如果有大量的上传/下载任务,云存储上的网络 I/0 就变成了一个很大的瓶颈。 …

    Linux 2023年6月14日
    088
  • nginx源码编译安装(详解)

    nginx编译安装 编译安装大致步骤: 安装步骤: 官网下载合适的版本,建议选择稳定版本。 官网地址:https://nginx.org wget https://nginx.or…

    Linux 2023年5月27日
    0121
  • 四、vi/vim编辑器

    vi/vim 模式命令模式编辑模式末行模式home键 行首end键 行尾命令模式切换到编辑模式a 当前字符后输入A 当前行行尾输入i 当前字符前输入I 当前行行首输入o 当前行下一…

    Linux 2023年6月7日
    095
  • lvs

    1.lvs简介 2.结构体系 3.lvs工作模式及原理 4.配置lvs 4.1 部署lvs-nat模式的httpd负载集群—http协议 4.2 部署lvs-dr模式的…

    Linux 2023年6月13日
    078
  • 由乐观锁延伸出的知识

    锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题,所以,锁主要用于多用户环境下保证数据库完整性和一致性以商场的试衣间为例,每个试衣间都…

    Linux 2023年6月7日
    064
  • linux神器sed快速入门,不好用你打我!

    为什么要学习sed sed(Stream EDitor)被誉为Linux三剑客之一,负责过滤和转换文本,功能灵活又强大,搭配正则表达式更是如虎添翼。 如果你需要向1000行文本中的…

    Linux 2023年6月7日
    074
  • jmeter 常用函数总结

    继上节课学习的_Randomstring函数,今天来学习全部的函数,进行函数总结。 1、_counter 函数—计数器 第一行值 true \ false :选择true,表示发起…

    Linux 2023年6月8日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球