【C/C++】C++中的四种强制类型转换

news/2024/5/13 5:30:54

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • C++四种类型转换
    • static_cast静态转换
    • dynamic_cast动态转换
    • const_cast去常转换
    • reinterpret_cast重解释类型转换

C++四种类型转换

  • static_cast<类型>(待转换量)
  • dynamic_cast<类型>(待转换量 )
  • const_cast<类型>(待转换量 )
  • reinterpret_cast<类型>( 待转换量 )

为什么要提出新的类型转换?
C语言中的强制类型转换无所不能,而C++强调类型安全。


static_cast静态转换

编译时确定的,用于相关内容的转换 。

  • int short char 之间
  • 浮点数与整数
  • 普通指针和泛型指针

例如:

    int a = 10;int b = 3;cout << static_cast<float>(a) / static_cast<float>(b) << endl;int *ptr = &a;void *ptr2 = static_cast<void*>(ptr);

可以转换继承中对象的向上和向下(向下转换(父类指针转为子类)没有类型检查,可能会有问题:例如当多个孩子继承父类)

注: A是B的父类,B->A 继承中对象的向上转换 A->B 向下转换

不相关的、不安全的不能转换
例如: student与int
char* 与int*
int ->int或 int->int


dynamic_cast动态转换

只适用于继承链上的两个类之间的转换,不能用于其他基本变量的转换

继承的向上转换效果等同于static_cast

继承向下转换会进行动态的安全检查

  • 如果转换失败,将会返回空指针异常
class Father 
{ virtual ~Father() {} 
};  
class Son : public Father 
{
};  Father* pFa = new Son;  
Son* pSon = dynamic_cast<Son*>(pFa);  

当向下转换(父类指针转为子类)时,父类中必须包含虚函数!(static_cast 不需要)


const_cast去常转换

用于改变类型的const或volatile属性。

它常用于修改指针或引用的const属性,以便修改原本定义为const的数据。

    const char *str = "TianXi";char *p = const_cast<char*>(str);

可以用于:

  • 对常量去常,移除const属性,但修改是不安全的
  • 对常对象去常,然后可以调用各种类成员函数
  • 将 volatile 转为非 volatile,防止修饰变量编译优化

reinterpret_cast重解释类型转换

C++中的强制类型转换,有安全隐患,一般编译不过再用。

它可以把任何类型的指针转换成任何其他类型的指针,或者把任何整数类型转换成任何指针类型,或者把指针转换成整数类型。但是这种转换没有运行时类型检查来保证安全性。


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

http://www.mrgr.cn/p/67868246

相关文章

如何使用Java代码混淆技术保护您的应用程序

摘要 本文探讨了代码混淆在保护Java代码安全性和知识产权方面的重要意义。通过混淆技术,可以有效防止代码被反编译、逆向工程或恶意篡改,提高代码的安全性。常见的Java代码混淆工具如IPAGuard、Allatori、DashO、Zelix KlassMaster和yGuard等,为开发者提供了丰富的选择。本文…

【专题】2022年中国制造业数字化转型研究报告PDF合集分享(附原数据表)

报告链接:http://tecdat.cn/?p=32145 本文中所说的制造业数字化转型,指的是在制造企业的设计、生产、管理、销售及服务的每一个环节中,将新一代信息技术应用到制造企业的设计、生产、管理、销售及服务的每一个环节中,并可以以每一个环节中产生的数据为基础,展开控制、监测…

15K star!一款功能强悍的手机电脑同屏工具,开源无需root!

在日常工作、生活场景中&#xff0c;经常会遇到需将手机与电脑屏幕进行共享。 今天就给大家推荐一款Android实时投屏神器&#xff1a;QtScrcpy。 它可以通过 USB / 网络连接Android设备&#xff0c;并进行显示和控制&#xff0c;且无需root权限。 1、简介 QtScrcpy是一款功…

redis自学(25)过期策略

Redis内存回收 Redsi之所以性能强,最主要的原因就是基于内存存储。然而但决断的redis其内存大小不宜过大,会影响持久化或者主从同步性。 我们可以通过修改配置文件来设置redis的最大内存:当内存使用达到上限时,就无法存储更多数据了 过期策略 在学习redis缓存的时候我们说过…

同一SAP系统下使用SCC1跨客户端(client)传输配置

abap开发中会涉及到一些配置的,也会生成定制请求,比如说BTE中的配置,webservice中的端口配置。 这些配置并不是跨client的,通常一个SAP系统内会有多个client,比如,开发机系统内存在两个client,100和200,100下是纯开发client,200下会有一点简单测试数据,100,200之间的…

金融案例:构建高效统一的需求登记与管理方案

在金融行业数字化转型背景下,银行等金融机构面临着业务模式创新与数据应用的深度融合。业务上所需要的不再是单纯的数据,而是数据背后映射的业务趋势洞察,只有和业务相结合转化为业务度量指标,经过数据分析处理呈现为报表进行展示,才能真正体现它们的价值。 但在需求转化为…

docker search xxx出现报错:docker 报错Error response from daemon: x509:

问题可能出现在daemon.json配置文件 1、打开此文件:vi /etc/docker/daemon.json,把境像地址换成:https://docker.mirrors.ustc.edu.cn2、然后重启服务器:reboot (或者重启docker使用daemon.json配置文件生效也行)重启后可以成功搜索了,随便搜索个tomcat吧:docker search …

精品凉拌菜系列热卤系列课程

这一系列课程涵盖精美凉拌菜和美味热卤菜的制作技巧。学员将学习如何选材、调味和烹饪&#xff0c;打造口感丰富、色香俱佳的菜肴。通过实践训练&#xff0c;掌握独特的烹饪技能&#xff0c;为家庭聚餐或职业厨艺提升增添亮点。 课程大小&#xff1a;6.6G 课程下载&#xff1…

记一次cast使用问题

适用范围 PostgreSQL 问题概述 昨天开发请求一个问题,在PostgreSQL数据库中创建了CAST(numeric as varchar),但是在进行模糊查询时,抛出如下错误: ERROR: operator does not exist: integer ~~ unknown LINE 1: select * from t1 where id like %1%;^ HINT: No operator …

Vscode创建php项目

1.安装中文插件&#xff08;可安装可不安装&#xff09; 2.安装主题&#xff08;可安装可不安装&#xff09; 3.安装和php相关的插件 4.打开文件夹 5.路由操作 查看项目中的route路由 浏览器中访问think 隐藏index.php入口文件 访问ThinkPHP5.1开发手册&#xff0c;复制apa…

方差与标准差

标准差,反映了一组数与平均值的紧密关系。 举例,有一组数,4,5,9,11,16。 第一步:求出平均值。 (4+5+9+11+16)5=9 第二步:求出各数与平均数的差 分别为,-5,-4,0,2,7 第三步:把差平方一下(目的就是转成正数) 结果为,25,16,0,4,49 第四步:把平方后的数求一个平均…

P1265 公路修建

原题链接 题解 1.每个城市选择一个与它最近的城市 2.如果三个或以上的城市申请修建的公路成环。如下图,A 申请修建公路 AB,B 申请修建公路 BC,C 申请修建公路 CA。则政府将否决其中最短的一条公路的修建申请; 但是这条不成立,请看这条题解 或者下图由此得出这题就是最小生…

手写SpringBoot(二)之动态切换Servlet容器

系列文章目录 手写SpringBoot&#xff08;一&#xff09;之简易版SpringBoot 手写SpringBoot&#xff08;二&#xff09;之动态切换Servlet容器 手写SpringBoot&#xff08;二&#xff09;之动态切换Servlet容器 文章目录 系列文章目录手写SpringBoot&#xff08;二&#xff…

在服务器(Ubuntu20.04)安装用户级别的cuda11.8(以及仿照前面教程安装cuda11.3后安装cudnn和pytorch1.9.0)

1、cuda11.8的下载 首先在cuda官网下载我们需要的cuda版本&#xff0c;这里我下载的是cuda11.8&#xff08;我的最高支持cuda12.0&#xff09; 这里我直接使用wget命令下载不了&#xff0c;于是我直接在浏览器输入后面的链接下载到本地&#xff0c;之后再上传至服务器的&am…

阿里云倚天服务器是什么?倚天服务器c8y、g8y和r8y详细介绍

阿里云倚天云服务器CPU采用倚天710处理器&#xff0c;租用倚天服务器c8y、g8y和r8y可以享受优惠价格&#xff0c;阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持&#xff1a; 阿里云倚天云服务…

上架难、买量贵?即构 Web 端 1v1 方案全力加速泛娱乐出海

1v1 视频社交以其功能简洁、互动性强、匹配效率高等特点,在陌生人社交玩法中饱受用户欢迎,平台仅需让两个用户通过匹配、选择等形式连通后,用户即可在房内进行 1v1 视频社交,且在社交的同时又极具私密性,满足了用户社交与 dating 的需求,盛行在中东土耳其、印度、南美等一…

SQL server 迁移至GBase 8c操作指南

SQL server 迁移至GBase 8c操作指南迁移数据库SQL server GBase 8c 首先下载依赖包perl 5.0以上版本,kettle linux 环境可以部署在gbase环境上使用手册:1、导出需要迁移数据库及表对象、视图、存储过程、自定义函数 登陆sqlserver management studio 选择数据库—右击--任务…

iOS系统下最佳的3款HTTP抓包工具:Thor、克魔助手和Http Catcher

引言 在苹果手机的iOS系统相对封闭的情况下,抓包工具并不是很常见。大多数人可能对这类工具并不熟悉,除了少数安全专家之外,一般用户很少会接触到这些工具。然而,在某些特定场景下,比如网络调试、安全测试等,抓包工具的作用不可忽视。本文将介绍三款在iOS系统下比较优秀的…

老阳:一文解答现在做Temu跨境电商还能不能赚钱

近年来&#xff0c;跨境电商行业持续火热&#xff0c;Temu作为其中的一员&#xff0c;也吸引了众多创业者和投资者的目光。然而&#xff0c;随着市场的不断饱和和竞争的加剧&#xff0c;很多人开始疑虑&#xff1a;现在做Temu跨境电商还能赚钱吗?一起去看看吧&#xff01; 任何…