C++ 中继承(无虚拟性)的运行时成本?

2024-01-07

在使用 -O3 编译的 C++ 中,没有虚拟性的继承是否会产生以下成本:

  • 执行时间处理时间
  • memory

如果答案是肯定的:为什么?

例如:MyClass1 和 MyClass2 在性能和内存方面等效吗?


执行时间处理时间

属于什么?函数是静态解析的,因此函数调用是相同的。MyClass1的构造函数将调用基类的构造函数,其析构函数将调用基类的析构函数,因此对于构造和销毁可能会有一些开销。Maybe。某些编译器可能会优化调用。

memory

这将是相同的,两者都只有一个成员double。理论上来说。我猜这取决于实现,因为标准没有强制要求,但最常见的是不会有内存开销。

Note删除一个对象MyClass1通过一个指针Derived导致未定义的行为,因为没有virtual析构函数。

Note 2没有多态性的继承是一种代码味道。并不是说这是错误的,但在大多数情况下组合更好。

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

C++ 中继承(无虚拟性)的运行时成本? 的相关文章

随机推荐

  • 从另一个视图调用我的服务器上的 API

    所以 这里的情况有点奇怪 我有一个 Django 项目 使用 TastyPie 来支持其 API 和一些视图 模板 这些视图 模板将用于为各个站点的插件提供支持 我没有将此插件构建为标准 Django 模板 而是被要求使用我们的 API 来
  • 使用三元运算符来初始化引用变量?

    抛开所有可维护性和阅读问题不谈 这些代码行会产生未定义的行为吗 float a 0 b 0 float x some condition a b x 5 cout lt lt a lt lt lt lt b 不 没关系 它不会在此代码中创建
  • 多点连接 - 在 Swift 5 中获取文件传输(互联网)速度和文件大小

    我正在点对点传输照片 一切正常 但我无法获得照片 文件 传输速度 例如互联网速度 与MB 一样 文件也被传输 其次我想获取该文件的大小 我们使用数据格式传递照片MCSession 由于隐私原因 我无法在此处添加项目代码 但我将分享我关注的参
  • 我在这个 CSS 布局中做错了什么?

    我在这里做了这个布局 http www 2xfun com http www 2xfun com 它使用了一些 css3 效果和并非每个浏览器都支持的东西 但如果它们不起作用也没关系 问题是我真的尽力让旧浏览器中的基本功能保持正常运行 我没
  • 将 2D NumPy 数组转换为 1D 数组以绘制直方图

    我正在尝试使用 matplotlib 绘制直方图 我需要转换我的单行二维数组 1 2 3 4 shape is 1 4 进入一维数组 1 2 3 4 shape is 4 我怎样才能做到这一点 Adding ravel http docs
  • GHC Haskell 当前的约束系统有什么问题?

    我听说 Haskell 的 损坏 约束系统存在一些问题 从 GHC 7 6 及以下版本开始 它出什么问题了 是否有一个可比的现有系统可以克服这些缺陷 例如 edwardk 和 tekmo 都遇到了麻烦 例如此评论来自 tekmo http
  • Google Api PHP 客户端库

    我正在尝试将 Google API PHP 客户端库用于 Google Analytic v3 我可以运行我在家里编写的简单应用程序 但是当我在办公室尝试时它不起作用 当我运行该程序时 系统会要求我将 php 应用程序授权给我的谷歌帐户 允
  • 按用户条件在 JSP 中渲染

    我正在尝试创建一个简单的论坛 只是为了掌握 Spring Security 和 MVC 框架 为了简单起见 我有一个 JSP 来查看论坛帖子 如下所示 Title forumPost title br Author forumPost au
  • Java 7 中的 java 流

    我的问题可能太宽泛 答案可能是简单的 否 但我必须问 是否有 Java 8 的等效实现streams https docs oracle com javase 8 docs api java util stream package summ
  • 调整“std::vector”的大小;哪些元素受到影响?

    std vector
  • 使用 jquery 在 iframe 中动态显示 javascript google 广告的问题

    我们尝试在动态添加的 iframe 中显示 Google 广告 在 iframe 中 src 字段通常是一个 url 但我们希望使用 data text html 格式以便能够直接使用我们的广告代码 它适用于简单的 JavaScript 代
  • 在 Firefox 中通过 URL 进行 HTTP 基本身份验证不起作用?

    我知道通常您可以通过在 URL 中传递用户名和密码来登录需要使用 Selenium 进行 HTTP 基本身份验证的网站 例如 selenium open http myusername email protected cdn cgi l e
  • 复合键字典

    我在列表中有一些对象 比方说List
  • git stash create 和 git stash store 的目的是什么?

    从文档中git scm http git scm com docs git stash 有两个 git stash 命令提到了与脚本编写的相关性 但不是一般用途 create 创建一个存储 这是一个常规提交对象 并返回其对象名称 而不将其存
  • 获取两个日期之间的日期列表未正确返回 JS

    我有一个开始日期和一个结束日期 我想生成这两个日期之间 并包括 的日期列表 但我不明白为什么它不起作用 我传入了几个 JS 日期对象 我已经在下面的控制台中展示了它们记录的内容 function dateList dateStart dat
  • 使用内置 python ssl 模块验证签名

    有没有办法使用内置的ssl验证签名的模块 从理论上讲 这似乎是可能的 因为ssl必须能够验证 ssl 消息签名 但我没有看到任何用于进行简单数字签名验证的公共接口 最终 我只是想要一个类似的功能PyOpenSSL 之一 http www p
  • iOS MVC - 如何将数据从模型传递到控制器?

    我对此做了很多研究 但我对我的问题有一个心理障碍 我正在为 iOS 应用程序开发 Objective C 这是我的设置 视图控制器从视图 用户输入 获取文本 并将该文本传递给模型的 MethodA 模型中的方法适用于输入文本并获取输出 例如
  • 在每个浏览器中加载 html5shiv 是否有任何副作用?

    On the html5shiv谷歌代码页 http code google com p html5shiv 示例用法包括 IE 条件 然而关于html5shivgithub页面 https github com aFarkas html5
  • 如何等待按键?

    如何让我的 python 脚本等待用户按下任意键 In Python 3 use input input Press Enter to continue In Python 2 use raw input raw input Press E
  • C++ 中继承(无虚拟性)的运行时成本?

    在使用 O3 编译的 C 中 没有虚拟性的继承是否会产生以下成本 执行时间处理时间 memory 如果答案是肯定的 为什么 例如 MyClass1 和 MyClass2 在性能和内存方面等效吗 执行时间处理时间 属于什么 函数是静态解析的