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

C++的类型转换

目录

一、隐式类型转换的触发场景

1.基本数据类型间的转换

i.提升转换

ii.截断转换

2.类与对象的转换

i.单参数构造函数

ii.类型转换运算符

3.继承体系中的指针/引用转换

向上转型

二、隐式转换的风险与问题

1.意外行为

2.二义性错误

3.性能损耗

三、C++强制类型转换

1.static_cast 和 reinterpret_cast

2.const_cast

3.dynamic_cast


一、隐式类型转换的触发场景

1.基本数据类型间的转换

i.提升转换
int a = 5;
double b = a + 3.14; // a自动转换为double
ii.截断转换
double x = 9.99;
int y = x; // y = 9(丢弃小数部分)

2.类与对象的转换

i.单参数构造函数

:若类定义了接受单个参数的构造函数,可能发隐式转换。

ii.类型转换运算符

:通过 operator T()定义自定义隐式转换

3.继承体系中的指针/引用转换

向上转型

:派生类指针/引用自动转为基类类型

二、隐式转换的风险与问题

1.意外行为

字符串 "data.txt" 隐式转换为 File 临时对象,函数结束后立即析构,可能导致资源提前释放

2.二义性错误

3.性能损耗

隐式转换可能生成临时对象,增加拷贝开销。

三、C++强制类型转换

明确表明了类型转换的意图,增强了代码的可读性和可维护性,让其他开发者能清楚知道这里进行了类型转换。

1.static_cast 和 reinterpret_cast

2.const_cast

const_cast最常用的用途就是删除变量的const属性,方便赋值

在C++中,volatile关键字是一种类型修饰符,用于告诉编译器某个变量的值可能会随时发生变化,因此每次访问该变量时都需要从内存中读职,而不是使用寄存器中的缓存值。

3.dynamic_cast


文章转载自:
http://biter.jopebe.cn
http://baluchi.jopebe.cn
http://arthropoda.jopebe.cn
http://budworm.jopebe.cn
http://anthropolatry.jopebe.cn
http://avicide.jopebe.cn
http://baume.jopebe.cn
http://bleed.jopebe.cn
http://bestride.jopebe.cn
http://acerbic.jopebe.cn
http://antisudorific.jopebe.cn
http://chetah.jopebe.cn
http://castalie.jopebe.cn
http://bioautography.jopebe.cn
http://aiwa.jopebe.cn
http://accessory.jopebe.cn
http://anatropous.jopebe.cn
http://aurify.jopebe.cn
http://bitmap.jopebe.cn
http://abortionism.jopebe.cn
http://checkerman.jopebe.cn
http://bellhanger.jopebe.cn
http://anaerobic.jopebe.cn
http://biographize.jopebe.cn
http://bankroll.jopebe.cn
http://bitumen.jopebe.cn
http://bimbo.jopebe.cn
http://alap.jopebe.cn
http://chalkware.jopebe.cn
http://anterior.jopebe.cn
http://www.dtcms.com/a/37426.html

相关文章:

  • 设计一个光伏热泵系统的 PID 模糊控制器
  • windows本地升级npm
  • 短剧源码部署搭建小程序搭建IAA+IAP混合解锁模式
  • C语言--文件操作
  • BERT模型详解及代码复现
  • [Web 安全] PHP 反序列化漏洞 —— PHP 反序列化漏洞演示案例
  • mysql 学习19 MYSQL管理以及使用工具
  • 【机器学习】强化学习(2)——捋清深度强化学习的思路
  • Room记录搜索记录逻辑思路
  • QEMU源码全解析 —— 内存虚拟化(20)
  • MySQL 和 Elasticsearch 之间的数据同步
  • 国科大——数据挖掘(0812课程)——课后作业
  • 【阮一峰】20.注释指令
  • 禾迈电力电子嵌入式面经和参考答案
  • OpenCV计算摄影学(2)图像去噪函数denoise_TVL1()
  • 十类DeepSeek学术提示词分享
  • 代码异常(js中push)NO.4
  • Oracle 数据库基础入门(一):搭建数据管理基石
  • DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案
  • 网络安全复习资料
  • 音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介
  • 基于MATLAB的OFDM通信系统仿真设计
  • 【NLP 27、文本分类任务 —— 传统机器学习算法】
  • QT 中的元对象系统(一):元对象和元数据
  • Android NFC功能开发指南
  • 深度求索DeepSeek:AI大模型的全域应用与技术突破
  • 8. 示例:对32位数据总线实现位宽和值域覆盖
  • BUG: 解决新版本SpringBoot3.4.3在创建项目时勾选lombok但无法使用的问题
  • 本地部署DeepSeek R1满血版大模型
  • deepseek 70b 部署需要的配置