当前位置: 首页 > 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

相关文章:

  • 设计一个光伏热泵系统的 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失败解决方案
  • 网络安全复习资料
  • 做营销网站策划有什么前景/品牌推广方案模板
  • 郴州新网交友手机版/哈尔滨seo网络推广
  • 济南中京网站建设公司/中国营销型网站有哪些
  • 天长街道两学一做网站/今天的新闻大事10条
  • 网站好坏的指标/网站关键词优化网站推广
  • 苏州网站建设kgu/其中包括