为什么没有 static_cast 会失败?

2023-12-10

编译f有效,但编译g因错误而失败。

为什么会出现这种情况?

class A {
public:
  A() {}
};

class B : public A {
public:
  B() {}
};

void f() {
  A* a = new A();
  B* b = static_cast<B*>(a);
}

void g() {
  A* a = new A();
  B* b = a;
}

A static_cast强制进行可能不安全的转换。

B* b = static_cast<B*>(a);

这将是有效的,如果a指向一个A实际上是 a 的基类子对象的对象B对象,但事实并非如此。演员阵容强制转换。

B* b = a;

这里没有强制转换,并且(正确地)不允许从基类指针到派生类指针的隐式转换。指向派生类的指针始终可以转换为指向基类的指针,因为派生类对象始终包含基类子对象,但并非每个基类实例都是特定派生类类型的子对象。

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

为什么没有 static_cast 会失败? 的相关文章

随机推荐

  • 在 SQL Server Management Studio 中编辑表后保存更改

    如果我想保存之前保存在 SQL Server Management Studio 中的表中的任何更改 表中不存在数据 我会收到一条错误消息 不允许保存更改 您所做的更改需要 以下表格将被删除并重新创建 你要么做了 对表的更改无法重新创建或启
  • 在 Twilio Android 客户端中未调用挂起意图

    我正在使用示例安卓客户端在 Twilio 中进行语音通话 我可以从 Android 客户端拨打电话 但无法接听任何来电 呼叫在我的服务器和 twilio 之间正确路由 甚至显示在呼叫日志中 但未调用活动 有人可以帮助我吗 我认为未决意图存在
  • 如何将用户凭据传递到 Kubernetes Pod 内的(用户限制的)安装卷?

    我正在尝试通过 Kubernetes Secret 将用户凭据传递到 Kubernetes Pod 内已安装的受密码保护的目录 NFS 文件夹 mount protected有用户访问限制 即只有某些用户可以访问此文件夹 这是我的 Pod
  • 简单的 NASM“启动程序”无法正确访问内存?

    请注意 当我说引导程序时 我并不是指引导操作系统的程序 我的意思是 一个简单的程序 当您启动计算机并执行某些操作时就会运行 好吧 所以我不是极其精通汇编 NASM 但我认为我对它有足够的掌握来编写简单的引导程序 Well I thought
  • 为什么 QML 代码的更改有时在点击“运行”时没有反映出来?如何解决?

    在这个 Qt Quick 简单示例中 我希望当我向上移动 Racked 时 我们会收到一条消息控制台日志当球拍向下移动时显示该运动和另一条消息 我为此编写了这段代码 Racket qml import QtQuick 2 8 Rectang
  • 有没有更有效的方法来处理 C# ASP.NET(尤其是 MVC 5)上的亚马逊产品广告 API?

    我终于在我的 MVC 5 网站上使用了 Amazon 产品广告 API 我正在使用亚马逊网站的下载之一中提供的 SignedRequestHelper 类 我实际上已经获得了 Amazon API 的参考 但我目前似乎根本没有使用它 到目前
  • 最后的资源优化

    我正在编写一个不支持两阶段提交的资源适配器 我知道有一种优化技术称为 最后资源优化 在 JBoss 上 您的 XAResource 类应该实现 LastResource 以便进行优化 我的问题是 如何在 WebLogic WebSpehre
  • Angularjs 将数组映射到另一个数组

    我有两个数组 Users and 就业机会像这样 Users id 1 name ryan id 2 name Julie Employments user id 1 title manager user id 2 title Profes
  • 如何重新启动 Robotium 中关闭的应​​用程序?

    我开始自动化我的 Android 应用程序 它有一个 条款和条件 屏幕 在那里 如果我点击 衰退 我的应用程序将被关闭 如何在同一进程中重新启动或重新启动我的应用程序 尝试这个 assuming this method is in a Ac
  • CSS 样式表不适用于自定义 QWidget

    我想做的是将自定义 CSS 应用于派生自的自定义小部件QLabel但我没有运气 我将自定义类定义为 class CustomLabel public QLabel 我还没有重新实现paintEvent鉴于标准 我认为功能QLabel支持CS
  • Sugarcrm 8 XSRF

    我已经备份了 Sugarcrm 版本 8 0 0 企业版的 ondemand 实例 它对于 CRUD 记录和其他内容正常工作 但是当我尝试通过 Zip 上传模块时 它给出了以下错误 Cross Site Request Forgery XS
  • 如何停止鼠标垂直滚动

    我在网络浏览器中使用java脚本 Jquery 我制作了一个自定义水平滚动条 它与鼠标滚轮或鼠标滚动一起使用 通常鼠标滚动与垂直条一起使用 所以它与我编程的水平滚动条冲突 我不想完全删除竖线 而只是在滚动鼠标时禁用竖线 如果您有道理 请提出
  • Django 查询:计算具有 FK 的对象数量以建模实例

    这应该很容易 但由于某种原因我找不到它 我有以下内容 App models Model Release models Model date models DateTimeField App models ForeignKey App 如何查
  • 延迟长度字符变量会导致内存泄漏,具体取决于优化级别

    我在 Ubuntu 中使用 gfortran 8 4 和延迟长度字符变量 如下例所示 PROGRAM test IMPLICIT NONE CHARACTER LEN ALLOCATABLE str str 10 END PROGRAM t
  • asp.net c# 中的动态 imageURL

    目前我有这个
  • xpages 视图面板列多值分隔符

    视图中有一列具有多值分隔符和新行 但是当我将此视图拖放到我的 XPage 中时 作为
  • 动态 OR 过滤 - Slick

    好的 我有一个带有多个可选参数的方法 如下所示 def username Option String petname Option String favouritefood Option String 我想编写一个动态查询 它将能够以这种方
  • 加载媒体时出错:jw_player Rails 中的文件无法播放错误

    我正在使用下面提到的代码来播放本地磁盘上的视频 但它不起作用 而不是抛出错误加载媒体 文件无法播放错误 我已经提到了下面的代码 我是这个 jw player 的新手 所以请帮我解决这个问题 提前致谢 从下载 jwplayerhttp www
  • HTML 不显示带有 JLabel 的 Java Applet

    当我执行与我的小程序关联的 HTML 文件时 没有绘制任何内容并且屏幕是空的 为什么会出现这种情况 如何将字符串添加到 Applet 中 Java Applet 的源代码 package m2mcom web import m2mcom e
  • 为什么没有 static_cast 会失败?

    编译f有效 但编译g因错误而失败 为什么会出现这种情况 class A public A class B public A public B void f A a new A B b static cast