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

news2024/9/27 23:26:58

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥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.coloradmin.cn/o/1551165.html

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

相关文章

USART发送各种数据类型数据的原理及程序实现

硬件接线&#xff1a; 显示屏的SCA接在B11&#xff0c;SCL接在B10&#xff0c;串口的RX连接A9&#xff0c;TX连接A10。 新建Serial.c和Serial.h文件 在Serial.c文件中&#xff0c;实现初始化函数&#xff0c;等需要的函数&#xff0c;首先对串口进行初始化&#xff0c;只需要…

信创实力进阶,Smartbi再获华为云鲲鹏技术认证

日前&#xff0c;经华为技术有限公司评测&#xff0c;思迈特商业智能与数据分析软件Smartbi Insight V11与华为技术有限公司Kunpeng 920 Taishan 200完成并通过相互兼容性测试认证&#xff0c;成功再获华为云鲲鹏技术认证书&#xff0c;标志着Smartbi与华为云鲲鹏产业生态合作更…

http模块—http请求练习

题目要求&#xff1a;搭建如下http服务&#xff1a; 1.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求的url路径地址是/login。响应体结果是登录页面 2.当浏览器向我们的服务器发送请求时&#xff0c;当请求类型是get请求&#xff0c;请求…

物流智能蓝牙锁控设计方案

一、行业背景与需求分析 物流行业作为全球贸易和供应链管理的关键环节&#xff0c;其安全性和效率对整个经济体系的运作至关重要。随着电子商务的兴起和全球市场的一体化&#xff0c;物流行业正面临着前所未有的挑战&#xff0c;尤其是在货物安全、运输效率、成本控制和信息管…

C#学生信息成绩管理系统

一、系统功能描述 本系统包括两类用户&#xff1a;学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息&#xff1b;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等&#xff0c;而学生则可以通过系统来选择课…

干货分享:品牌如何通过社媒激发年轻人消费力?

随着年轻人的消费愈发理性&#xff0c;年轻人在消费时更偏向于熟人种草场景下的信任决策&#xff0c;社交媒体成为品牌吸引用户的必争之地。今天媒介盒子就来和大家聊聊&#xff1a;品牌如何通过社媒激发年轻人消费力。 一、 激发用户共鸣&#xff0c;与用户产生情感连接。 虽…

Midjourney辞典AIGC中英双语图文辞典+Midjourney提示关键词

完整内容下载&#xff1a;https://download.csdn.net/download/u010564801/89042077 完整内容下载&#xff1a;https://download.csdn.net/download/u010564801/89042077 完整内容下载&#xff1a;https://download.csdn.net/download/u010564801/89042077

哈希表(hash_table) 哈希存储 算法相关知识 稳定性 时间复杂度

哈希存储(散列存储) 为了快速定位数据 哈希表 哈希冲突 / 哈希矛盾 关键字不一样&#xff0c;但是映射之后结果一样 如何避免 哈希矛盾&#xff1f; 1、重新设计哈希函数&#xff0c;尽可能均匀散列分布在哈希表 2、开放定址法&#xff1a;向下寻找未存储的位置进行存放数…

aardio - 【库】godking.plusSkin 设置plus样式

库名&#xff1a;godking.plusSkin 库文件下载工具&#xff1a;http://chengxu.online/show.asp?softid272 使用本库&#xff0c;可以快速设置plus样式。主要针对按钮样式进行快速批量设置。 部分用法如下&#xff1a; import win.ui; /*DSG{{*/ var winform win.form(tex…

C++初学者:如何优雅地写程序

我喜欢C语言的功能强大&#xff0c;简洁&#xff0c;我也喜欢C#的语法简单&#xff0c;清晰&#xff0c;写起来又方便好用。 一、为什么不用C语言写程序。 C语言用来做题目&#xff0c;考试研究是很方便的&#xff0c;但是用来写程序做软件&#xff0c;你就会发现&#xff0c…

Android中运动事件的处理

1.目录 目录 1.目录 2.前言 3.程序演示 4.第二种程序示例 5.扩展 2.前言 触摸屏&#xff08;TouchScreen&#xff09;和滚动球&#xff08;TrackBall&#xff09;是 Android 中除了键盘之外的主要输入设备。如果需要使用触摸屏和滚动球&#xff0c;主要可以通过使用运动事…

[DS]Polar靶场web(一)

静以养心&#xff0c;宽以养气。 跟着Dream ZHO大神学专升安的一天 swp 直接dirb扫出.index.php.swp的目录 function jiuzhe($xdmtql){return preg_match(/sys.*nb/is,$xdmtql);//如果包含以 "sys" 开始&#xff0c;后跟任意字符直到 "nb" 的字符串&…

[XG] HTTP

我希望风起&#xff0c;而你好像更希望风停。 闲来无事&#xff0c;跟着Z3r4y-CSDN博客大神学一学web吧 [NewStarCTF 2023]Begin of HTTP 1.题目要求使用GET方式来给ctf参数传入任意值&#xff0c;那就传吧。 2.又让以POST方式来传递secert参数&#xff0c;并且要找一下参数…

python--字符串和常见的方法

1.字符串对象 字符串 " 字符串 " """ 字符串 """ 字符串 str() #全局函数&#xff0c;将一个类型转化为字符串 len(字符串) #获取字符串长度 while 和 for 循环&#xff0c;遍历字符串 案例一&#xff1a;查看字…

ubuntu系统下如何使用vscode编译和调试#小白入门#

编程环境&#xff1a;ubuntu系统为18.04.1&#xff0c;vscode版本为1.66.2 一、VSCode切换中文显示&#xff1a; 1、vscode安装完成后启动,在左侧externsions中搜索“简体中文”插件&#xff0c;并完成安装&#xff1a; 2、选择右下角齿轮形状的"Manage"&#xff…

记·汇编语言、C语言分别写并链接

电脑是64位的&#xff0c;汇编语言是AT&T风格。风格不同的汇编语言&#xff0c;汇编时的指令是不同的。在我学习过程中带来了挺多麻烦。 C语言内容。hello.c #include <stdio.h>//声明汇编编写的函数 extern void print_hello();int main() {// 调用汇编函数print_…

蓝桥杯真题Day40 倒计时19天 纯练题!

蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A&#xff0c;请你统计有多少个子矩阵 (最小 1 1&#xff0c;最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数&#xf…

机器学习模型——KNN

KNN的基本概念&#xff1a; KNN(K-Nearest Neighbor)就是k个最近的邻居的意思&#xff0c;即每个样本都可以用它最接近的k个邻居来代表。KNN常用来处理分类问题&#xff0c;但也可以用来处理回归问题。 核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某…

好物视频素材哪里找,下面推荐几个好用给大家

想要创作出精彩的好物视频&#xff0c;离不开优质的素材。在这里&#xff0c;我将介绍一些提供免费好物视频素材的网站&#xff0c;让你轻松找到所需素材。 首先&#xff0c;蛙学网&#xff08;https://www.waxuewang.com&#xff09;是一个提供高质量视频素材的网站&#xff…

Redis面试题-缓存雪崩、缓存穿透、缓存击穿问题

1 穿透: 两边都不存在&#xff08;皇帝的新装&#xff09; &#xff08;黑名单&#xff09; &#xff08;布隆过滤器&#xff09; 2 击穿&#xff1a;一个热点的key失效了&#xff0c;这时大量的并发请求直接到达数据库. &#xff08;提前预热&#xff09; 3 雪崩&#xff1a…