我的编程空间,编程开发者的网络收藏夹
学习永远不晚

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

1.static_cast对类的指针只能转换有继承关系的类。对普通的指针来说只能在void*和其他指针之间转换。它还可转换简单的类型,比如int到char等。不能提供数字到指针的转换。不能提供不同类型指针之间的转换比如int*到char*。

2.dynamic_cast提供安全的转换如果两个指针不存在继承关系转换会失败返回空指针,如果你提供一个错误的指针那样会发生内存访问异常,因为它会去比较两个类型的虚函数表。虚函数表的指针一般放在对象指针最开始的四字节中,你去访问一个错误的地址这样肯定会发生异常。

3.reinterpret_cast提供数字到指针间的转换比如void*到int。提供不同类型指针的强制转换比如int*到char*。不提供int到char的转换。但是处理类指针转换的时候不能用它,它不会自动的调整指针。

4.const_cast把一个const指针转为非const,最好不要用这个转换。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法详解

以下是对static_cast,dynamic_cast,reinterpret_cast,const_cast的区别及用法进行了详细的分析介绍,需要的朋友可以过来参考下
2022-11-15

static_cast,dynamic_cast,reinterpret_cast和const_cast的区别详解

以下是对static_cast,dynamic_cast,reinterpret_cast和const_cast之间的区别进行了详细的介绍,需要的朋友可以过来参考下
2022-11-15

关于promise和async用法以及区别详解

Promise是一个构造函数,我们就可以newPromise()得到一个Promise的实例,下面这篇文章主要给大家介绍了关于promise和async用法以及区别的相关资料,需要的朋友可以参考下
2023-01-10

Shell编程中while与for的区别及用法详解

在shell编程中经常用到循环,常用的循环有for和while循环两种。while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别。 一、常用语法 1、for循环 for循环常用的语
2022-06-04

C语言中*和&的区别及使用方法详解

在 c 语言中, 用于解引用指针,返回指向的值;& 用于取地址,返回指向该变量的指针。 通常用于访问或修改指针所指向的值;& 通
C语言中*和&的区别及使用方法详解
2024-04-03

Linux系统关机命令之间的区别及用法详解

Linux系统关机命令有哪些呢?良许教程网为您解答!熟悉linux的朋友应该知道我们在linux系统中常用到的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令
2022-06-03

MySQL深入详解delete与Truncate及drop的使用区别

目录一、删除的内容deletetruncatedrop drop二、删除过程三、表和索引所占空间四、应用范围五、删除程度六、处理速度七、语句类型:八、语法区别九、总结deletetruncatedrop参考文章:链接一、删除的内容del
2022-07-25

Linux中nohup与&的用法和区别详解

示例 : 我们用python代码loop_hello.py做示例,代码的作用是循环输出循环次数和hello world!,每次输出后sleep 1秒 示例代码如下:import timedef main():i = 0 while
2022-06-04

JS中some和every的区别和用法详解

every 和 some 都是数组迭代方法,都可以遍历数组,这篇文章主要介绍了JS中some和every的区别和用法,需要的朋友可以参考下
2023-05-19

详解CSS伪类和伪元素的用法以及它们之间的区别

CSS伪类和伪元素的区别及用法详解伪类和伪元素是在CSS中经常使用的概念,它们可以帮助我们选择和样式化HTML中的特定元素。虽然它们的名字相似,但它们有不同的用法和功能。在本文中,我们将详细解释CSS伪类和伪元素的区别,并给出具体的代码示例
详解CSS伪类和伪元素的用法以及它们之间的区别
2023-12-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录