reinterpret_cast 与 c 风格强制转换 [重复]

2024-03-04

可能的重复:
c 风格强制转换与reinterpret_cast https://stackoverflow.com/questions/8427107/c-style-cast-vs-reinterpret-cast

有什么区别:

A* pA = new B;

B* p1 = (B*)pA;
B* p2 = reinterpret_cast<B*>(pA);

它们做同一件事的方法是否相同?有什么理由选择其中之一而不是其他吗?在 C++ 代码中是否应该避免“C 风格”强制转换?


C 风格强制转换相当于以下第一个成功的转换:

  • a const_cast
  • a static_cast
  • a static_cast其次是const_cast
  • a reinterpret_cast
  • a reinterpret_cast其次是const_cast

因此在某些情况下,C 风格的强制转换将具有与reinterpret_cast但它们并不等同。由于 C 风格的演员基本上是“哦,尽你所能”的演员,所以最好选择更具体的演员。

对于您的示例,最好使用static_cast因为您知道派生对象的实际类型。当你不这样做时,使用dynamic_cast.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

reinterpret_cast 与 c 风格强制转换 [重复] 的相关文章

随机推荐

  • Android - 从通知中删除操作按钮

    我想在单击这些操作按钮时关闭通知操作按钮 而不是整个通知 比方说 带有停止操作按钮的下载通知 单击停止时 关闭停止按钮并将 contentText 更改为 下载已取消 我唯一想到的是取消通知并通知具有相同 id 的另一个通知 但这似乎是一个
  • 链接器错误“包含无效的 OMF 记录”2

    我正在使用 Embarcadero XE8 C 构建器 32 位 我正在向我的程序添加一个库来解决Unresolved external error 当我添加库时 出现如标题所示的错误 于是我上网搜索了一下 在stackoverflow上找
  • C++ 类作为 Objective-C 类的实例变量

    我需要混合 Objective C 和 C 我想将所有 C 内容隐藏在一个类中 而将所有其他内容保留为纯 Objective C 问题是我想要一些 C 类作为实例变量 这意味着它们必须在头文件中提及 头文件会被其他类包含 并且 C 开始传播
  • 为什么从实例获取类属性会引发 AttributeError?

    通常 您可以从该类的实例访问常规类属性 字段 然而 当尝试访问一个类时property 会引发 AttributeError 为什么实例看不到类对象的属性 class Meta type property def cls prop cls
  • 扭曲的 dns 不起作用

    我想知道为什么以下不起作用 from twisted internet import defer reactor from twisted python failure import Failure import twisted names
  • 有没有类似于 LinkedIn Engineering 发布的案例研究?

    LinkedIN Engineering 发布了一系列关于他们在开发 iPad 混合移动应用程序时的经验和发现的精彩案例研究 http engineering linkedin com mobile linkedin ipad native
  • RegisterHotKey 不适用于不可见表单 (c#)

    我试图在系统托盘中放置一个图标 然后为其提供一个全局键盘快捷键来执行某项功能 我使用 RegisterHotKey 设置全局键盘快捷键 如果与图标关联的主窗体可见 则它可以工作 但如果窗体不可见 则永远不会调用 WndProc 方法 有任何
  • 谁分享了我的 Facebook 帖子?

    使用任何适用于 Python 的 Facebook API 我试图获取分享我的帖子的人数以及这些人是谁 我目前有第一部分 gt gt gt from facepy import gt gt gt graph GraphAPI CAAEr g
  • monodevelop 3 - 支持“附加到进程”

    MonoDevelop 3 支持附加到进程吗 如果是这样 有人可以指出它在哪里或任何可能的解决方法 简短的回答是 不 据我所知不是 但是 如果您希望在不从 MonoDevelop 启动项目的情况下进行调试 则可以选择使用此处描述的软调试器
  • 将 xtext 编辑器支持与外部 ANTLR 解析器链接起来

    我当前的项目 将其命名为 IoTSuite 采用高级规范 解析它们 并生成 Java 和 Android 代码 在这个项目中 我编写了 ANTLR 语法来解析高级规范 并使用 StringTemplate 作为代码生成器 然而 由于良好的编
  • 使用自定义 Maven 插件“无法设置 org.eclipse.aether.spi.log.Logger”

    我写了一个小的自定义 Maven 插件 它运行良好 大多数时候 使用它时 它被配置为在测试阶段运行 并且我看到它正在执行 没有问题 现在问题来了 当我这样做时mvn 干净安装 or mvn 干净部署在使用该插件的项目中 它失败并显示一条我无
  • 加密 AES/CBC/PKCS7Padding

    帮我加密一下AES CBC PKCS7Padding 下面是我的解密代码AES CBC PKCS7 它正在工作 但是当我加密一些字符串并从我自己解密时 这是错误的 下面我添加代码来加密和解密 AES CBC PKCS7Padding NSD
  • 在 ZF2 控制器中获取请求授权标头

    我正在使用 ZF2 出于某种原因 我可以获取我发送的所有标头 授权标头除外 就像它被过滤掉一样 我试图获取控制器中的所有标头 如下所示 public function createAction data request this gt re
  • SSAS Cube 处理日志

    SSAS立方体在哪里加工 不是错误 不是飞行记录器 日志存储了吗 我们有一个运行 SQL Server Analysis Services 命令的 SQL 代理作业 其中有一些 DMX 处理每个维度 然后处理多维数据集数据库 包含两个多维数
  • 通过 testcafe-browser-tools 将自定义参数传递到 Chrome 二进制文件时,无头运行 testcafe

    在 Vagrant VM 中运行 testcafe 即mostly在职的 但是 Chrome 在启用硬件加速的环境中无法正常启动 因此我必须使用命令行标志来启动它 disable gpu 我利用 testcafe browser tools
  • 如何在webapi上传中获取多部分文件的流?

    我需要使用流 Azure Blob 存储 上传文件 但无法找到如何从对象本身获取流 请参阅下面的代码 我是 WebAPI 的新手 并且使用过一些示例 我正在获取文件和文件数据 但对于我的上传方法来说 它的类型不正确 因此 我需要将其获取或转
  • 将java程序编译为可执行文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何为 Java 程序创建 exe https stackoverflow com questions 516399 how do i create an exe for a java program
  • Xpath 表达式

    我需要获得的价值
  • 无法访问复制到 /var/www/ 或其他文件夹中的 php 文件

    我使用的是带有 LAMP 设置的 Ubuntu 12 10 我将 Windows PC 上的 xampp htdocs 中包含项目文件 php html css 的子目录复制到我的 ubuntu 的 var www 中 但是 当我从浏览器访
  • reinterpret_cast 与 c 风格强制转换 [重复]

    这个问题在这里已经有答案了 可能的重复 c 风格强制转换与reinterpret cast https stackoverflow com questions 8427107 c style cast vs reinterpret cast