C++之强制转换

在C++中,类型强制转换有四种主要的形式,分别是:static_castdynamic_castconst_castreinterpret_cast。每种类型转换都有其特定的用途和限制。

  1. static_cast: 主要用于常见的类型转换,如数值类型之间的转换,父子类指针或引用的转换(向上转换),以及void指针与其他指针类型之间的转换。使用时需要注意安全性,因为它在编译时期执行类型检查,但不能用于完全不相关的类型转换。

     

    cpp

  • double d = 3.14;
    int i = static_cast<int>(d);  // double转换为int
    
  • dynamic_cast: 用于安全地在继承层次中进行向下转型(子类向父类的类型转换),并在运行时检查转换的有效性。只能用于具有虚函数的类,且目标类型必须是多态的。

     

    cpp

  • Base* base_ptr = new Derived();
    Derived* derived_ptr = dynamic_cast<Derived*>(base_ptr);  // 向下转型
    if (derived_ptr) {// 转型成功
    } else {// 转型失败
    }
    
  • const_cast: 主要用于去除指针或引用的const或volatile属性,用于修改变量的const属性或volatile属性。需要注意的是,使用const_cast进行非const对象的const_cast转换是未定义行为。

     

    cpp

  • const int ci = 10;
    int* iptr = const_cast<int*>(&ci);  // 去除const属性
    *iptr = 20;  // 此时可以修改ci的值
    
  • reinterpret_cast: 用于处理低级转换,比如指针之间的位模式转换,或者不同类型指针之间的转换(如指针到整数类型的转换)。它是最不安全的转换,因为它不进行任何类型检查。

     

    cpp

  1. int num = 10;
    void* void_ptr = reinterpret_cast<void*>(&num);  // 将int指针转换为void指针
    

这些类型强制转换在C++中提供了灵活性和功能,但在使用时需要谨慎,确保不会违反类型系统的安全性和规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/864752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的校园商铺管理系统

功能结构图&#xff1a; 实现图&#xff1a; 后台功能&#xff1a; 商品管理 公告管理 前台页面 详情 订单 我的订单

SciencePub学术刊源 | 7月SCI/SSCI/EI/CNKI刊源表已更新!(内含TOP及CCF推荐)

【SciencePub学术】我处SciencePub学术2024年7月SCI/SSCI/EI/CNKI刊源表已更新&#xff01;内含多本中科院TOP、CCF推荐以及进展超顺的优质期刊&#xff0c;最快1-3个月录用&#xff01; 计算机领域重点SCI 环境地质化学领域重点SCI 生物医学领域重点SCI 数学材料领域重点SCI 各…

【CH32V305FBP6】USBD 初始化分析

文章目录 前言实现时钟初始化分析USBD 设备初始化分析端点初始化分析 前言 分析 V305 USBD 初始化程序。 实现 初始化 /* main.c */ int main(void) {NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);SystemCoreClockUpdate();// USB 初始化USBHS_RCC_Init();USBHS_Device…

[AIGC] Spring Boot 整合 ClickHouse:优雅使用的指南

在大数据处理的场景中&#xff0c;ClickHouse的极高效率和强大功能使其在众多数据库系统中脱领而出。而Spring Boot作为流行的Java框架&#xff0c;与ClickHouse的结合&#xff0c;将使得数据分析如虎添翼。 文章目录 1. 添加依赖2. 配置连接3. 创建连接工厂4. 执行SQL操作 接下…

同星TTS系列产品全新亮相:让开发测试变得更简单!

TTS系列产品 如果需要完整地测试 ECU&#xff0c;不仅需要将通信网络连接到测试系统&#xff0c;还需要连接 I/O 接口。同星的TTS测试系统将连接 I/O 通道所需的所有电路组件集成在一个模块中&#xff0c;可以极大地简化测试台架和HIL测试系统的设置&#xff0c;提高搭建和测试…

武汉星起航:跨境电商领域的领航者,助力合作伙伴全球布局

在跨境电商的汹涌浪潮中&#xff0c;武汉星起航电子商务有限公司如同一颗璀璨的明星&#xff0c;自2017年起便以亚马逊自营店铺为核心业务&#xff0c;不断积累实战运营经验&#xff0c;逐步建立了自己在市场中的稳固地位。随着2020年公司的正式成立&#xff0c;武汉星起航明确…

layui 中 css 如何设置input placeholder 字体颜色和大小

在 Layui 中设置输入框&#xff08;input&#xff09;的占位符&#xff08;placeholder&#xff09;的字体颜色和大小&#xff0c;可以通过 CSS 来实现。以下是具体的步骤&#xff1a; 1. 添加 CSS 样式&#xff1a;在你的 CSS 文件或 <style> 标签中添加自定义样式。 …

学习笔记——动态路由——IS-IS中间系统到中间系统(背景)

一、IS-IS技术背景 1、前言 IS-IS最初是国际标准化组织ISO(the International Organization for Standardization)为它的无连接网络协议CLNP(ConnectionLess Network Protocol)设计的一种动态路由协议。 和OSPF一样&#xff0c;IS-IS也是一种基于链路状态并使用最短路径优先…

浅谈制造企业如何借力EHS,让安全管理上新台阶

当今商业环境中&#xff0c;企业管理不仅关注经济效益&#xff0c;更将目光投向了长远发展的基石——EHS&#xff08;环境Environment、健康Health、安全Safety&#xff09;管理体系。这一体系的崛起&#xff0c;标志着企业管理理念的一次深刻变革&#xff0c;它如同企业的守护…

Chisel学习笔记(1)——Chisel安装与Verilog代码仿真

参考链接&#xff1a; https://www.chisel-lang.org/docs/installation 使用Chisel语言编写硬件描述语言&#xff0c;相比于使用Verilog会更加地灵敏快捷&#xff0c;Coding效率更高&#xff0c;但似乎debug会出现一些小问题。但新工具还是要尝试一下才知道好不好用。 1 安装C…

构建RAG+nebula graph(知识图谱KG)

目标&#xff1a;通过利用 LlamaIndex 和 NebulaGraph 为费城费城人队&#xff08;Philadelphia Phillies&#xff09;构建一个RAG流程&#xff0c;深入探讨知识图谱。 NebulaGraph 是市场上最好的知识图谱数据库之一。它是开源的、分布式的&#xff0c;并且能够处理具有亿万边…

【linux】网络基础(2)——udp协议

文章目录 引言udp协议的特点udp的头部结构UDP的工作原理简单的UDP网络程序套接字的认识udp服务端代码udp客户端代码服务端运行 引言 用户数据报协议&#xff08;User Datagram Protocol, UDP&#xff09;是一种无连接的传输层协议。它是因特网协议家族的一部分&#xff0c;定义…

表单长时间无响应,页面失效提示

先贴代码&#xff0c;有时间在解释 <template><div :class"$style.root"><div>主页面</div><el-input v-model"txt" input"onChange" /></div> </template> <script> const TIME 10; //时间&…

C语言的数据结构:图的基本概念

前言 之前学过了其它的数据结构&#xff0c;如&#xff1a; 集合 \color{#5ecffd}集合 集合 —— 数据元素属于一个集合。 线型结构 \color{#5ecffd}线型结构 线型结构 —— 一个对一个&#xff0c;如线性表、栈、队列&#xff0c;每一个节点和其它节点之间的关系 一个对一个…

超酷的打字机效果?分享 1 段优质 CSS 代码片段!

大家好&#xff0c;我是大澈&#xff01; 本文约 900 字&#xff0c;整篇阅读约需 1 分钟。 每日分享一段优质代码片段。 今天分享一段优质 CSS 代码片段&#xff0c;实现打字机般的效果或其他类似的离散动画效果。 老规矩&#xff0c;先阅读代码片段并思考&#xff0c;再看代…

Python入门 2024/7/2

目录 格式化的精度控制 字符串格式化 对表达式进行格式化 小练习&#xff08;股票计算小程序&#xff09; 数据输入 布尔类型和比较运算符 if语句 小练习&#xff08;成人判断&#xff09; if-else语句 if-elif-else语句 练习&#xff1a;猜猜心里数字 嵌套语句 猜…

Pytest+Allure+Yaml+PyMsql+Jenkins+Gitlab接口自动化(四)Jenkins配置

一、背景 Jenkins&#xff08;本地宿主机搭建&#xff09; 拉取GitLab(服务器)代码到在Jenkins工作空间本地运行并生成Allure测试报告 二、框架改动点 框架主运行程序需要先注释掉运行代码&#xff08;可不改&#xff0c;如果运行报allure找不到就直接注释掉&#xff09; …

offer7.重建二叉树

根据二叉树的前序遍历和中序遍历重建二叉树 问题描述&#xff1a;输入某二叉树的前序遍历和中序遍历的结果&#xff0c;请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如&#xff0c;输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3…

二叉树之遍历OJ(含迭代)

目录 1.递归实现 前言 &#xff08;1&#xff09;前序遍历 &#xff08;2&#xff09;中序遍历 &#xff08;3&#xff09;后序遍历 2.迭代实现 前言 &#xff08;1&#xff09;前序遍历 方法一 方法二 &#xff08;2&#xff09;中序遍历 方法一 方法二 &#x…

2023年“科创中国”系列榜单发布

在7月2日召开的第二十六届中国科协年会上&#xff0c;中国科协正式发布2023年“科创中国”系列榜单。榜单经初评、终评&#xff0c;遴选出先导技术榜150项、新锐企业榜50项、融通创新组织榜10项、技术经理人先锋榜20项&#xff0c;共计230项入榜项目。 作为“科创中国”建设的…