无条件地从 T 构造函数调用类 T 的纯虚实现?

2024-02-12

考虑到一个虚拟调用T来自类的构造函数的成员函数(直接或间接)T,最多可以下降到T的实现,执行以下代码,其中不合格的电话,是否有未定义的行为?

请注意,为了避免噪音:如果您认为从构造函数调用时实际上不会调用成员函数,那么请不要在此处回答或评论,而是在单独的 SO 问题中提出该问题。谢谢。

struct Baze
{
    virtual void foo();
    virtual void bar() = 0;
    Baze(){ foo(); bar(); }
};

void Baze::foo() {}
void Baze::bar() {}

struct Derived: Baze
{
    void bar() override {}
};

int main()
{
    Derived{};
}

我相信这涵盖了[class.abstract]/6(N4140):

可以从抽象类的构造函数(或析构函数)调用成员函数;制作的效果 直接或间接为正在创建(或销毁)的对象调用纯虚函数(10.3) 这样的构造函数(或析构函数)是未定义的。

因此,即使您提供了纯虚函数的定义,它在技术上仍然是 UB。

有一个核心工作组问题可以解决这个问题here http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#230。规则似乎不太可能改变以使其得到明确定义。

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

无条件地从 T 构造函数调用类 T 的纯虚实现? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 有没有办法使用 cron 重新启动 pm2 进程,但前提是它尚未运行?

    我想通过 PM2 重新启动我的 Node Js 应用程序 pm2 restart app js 使用 crontab 但仅当应用程序尚未运行时 例如 如果我的服务器崩溃并重新启动并且 pm2 没有重新启动 即使它正在运行 上面的命令也会重新
  • TensorFlow的map_fn仅在CPU上运行

    我在尝试获取 TensorFlow 时遇到了一个奇怪的问题map fn在我的 GPU 上运行 这是一个最小的损坏示例 import numpy as np import tensorflow as tf with tf Session as
  • Log4net 日志记录不适用于并行线程

    我在随机数上使用基本的 Parallel Foreach 循环来使用 log4net 记录数字本身 这是我在并行线程上记录 5000 条消息的代码 Logger logger new Logger var numbers Enumerabl
  • Javascript 中是否按顺序执行相等的超时?

    假设我这样做 setTimeout foo 0 setTimeout bar 0 我可以确定 foo 会在 bar 之前开始执行吗 如果我使用 1 10 或 100 的超时值代替 0 会怎么样 简单的实验表明 在超时值相等的情况下 超时目标
  • XElement 添加一个 xmlns

    我正在使用 Linq to XML 创建一个新的 XML 文件 我从现有的 XML 文件中获取该文件的某些部分 我为此使用以下代码 var v2 new XDocument new XDeclaration 1 0 utf 16 new X
  • 使用 Mongoose 更新 _id = :id 的记录

    我正在尝试使用 Mongoose 更新现有记录 插入可以 但更新不行 这是我的片段 app post submit function req res var my visit new models visits date req body
  • 在 RedShift 中将值拆分为多行

    如何将字段 例如 CSV 字符串 拆分为多行的问题已经得到解答 将值拆分为多行 https stackoverflow com questions 13159526 split values over multiple rows 然而 这个
  • 如何在Java Web应用程序中动态设置会话超时?

    我需要为我的用户提供一个 Web 界面来更改会话超时间隔 因此 不同安装的 Web 应用程序的会话超时时间可能不同 但它们的会话超时时间不同 web xml不可能不同 有没有办法以编程方式设置会话超时 以便我可以使用 例如ServletCo
  • Greasemonkey 中未定义“文档”

    不到十分钟前 我决定为 Greasemonkey 编写第一个剧本 我对此的经验为零 另外 我的 JavaScript 有点生疏了 因为自从我上次用它编写代码以来已经有一段时间了 但我不明白为什么 Greasemonkey 给我这个错误 Li
  • PDF压缩库/工具

    我正在开发一个项目来减小 PDF 的大小并对其进行压缩 我想知道市场上是否有任何非常好的工具 库 NET 我确实尝试了一些工具 例如 Onstream Compression 但结果并不令人满意 一些额外的 兆 字节可以很容易地从 PDF
  • 从 Java 应用程序中执行 Pig

    是否可以在 Java 应用程序中运行 Apache Pig 作业 而无需分叉外部进程 Pig 和 Hadoop 似乎都是用 Java 编写的 但并不真正提供 Java API 我宁愿在 Java Spring 应用程序中使用这些工具 而不是
  • 打开本机相机后 Ionic 应用程序崩溃 - 错误 20

    我用的是科尔多瓦camera插件开启ionic 4捕捉一些图像 takePicture console log camera takePicture const options CameraOptions quality 100 desti
  • 使用 RXJava 进行缓存处理

    我正在尝试使用 rxJava 实现此工作流程 但我确定我是否误用或做错了事情 用户要求登录 如果登录结果在缓存中可用 则 发出 缓存的登录结果 否则 如果一切成功 则实际执行对 Web 服务的请求并缓存结果 如果发生错误 最多重试 3 次
  • 为什么我在这个解析器序列中遇到类型错误(Erik Meijer 的讲座 8)?

    我正在观看函数式编程基础知识Erik Meijer 的系列讲座 幻灯片由 Graham Hutton 制作 In 第 8 课 关于函数解析器 https www youtube com watch v OrAVS4QbMqo 定义后Pars
  • 读取多个 xlsx 文件,每个文件都有多个工作表 - purrr

    我有多个 Excel 文件 每个文件都有不同的工作表 我尝试使用 readxl 和 map 将其导入到 R 中 但是 我只能使用 for 循环来完成此操作 下面的代码工作正常 但我想知道是否有一个聪明的方法来做到这一点 我一直认为我可以用
  • Google AppEngine:表单处理“重复”StructuredProperty

    我如何与ndb StructuredProperty 重复 True 设计表单和处理程序时的属性 考虑这个例子 我有 3 种 ndb Model 类型 技术人员 his 教育 和他的 工作 经验 后两者是 SkilledPerson 的 S
  • 如何从数据框中获取特定列中具有最大值的行?

    我有一个像这样的数据框 df show 5 kv list1 list2 p k1 v2 1 2 5 9 5 1 7 9 6 3 1 4 9 0 5 k1 v3 1 2 5 8 9 5 1 7 9 6 3 1 4 15 0 9 k2 v2
  • 最好/常见的 RESTful url 动词和操作是什么?

    我正在尝试查找有关最佳和最常见的 RESTful url 操作的一些信息 例如 您使用什么 URL 来显示项目的详细信息 编辑项目 更新等 question show
  • 需要一个 linq 来生成自身连接

    根据这篇文章为什么 MYSQL 较高的 LIMIT 偏移量会减慢查询速度 https stackoverflow com questions 4481388 why does mysql higher limit offset slow t
  • 无条件地从 T 构造函数调用类 T 的纯虚实现?

    考虑到一个虚拟调用T来自类的构造函数的成员函数 直接或间接 T 最多可以下降到T的实现 执行以下代码 其中不合格的电话 是否有未定义的行为 请注意 为了避免噪音 如果您认为从构造函数调用时实际上不会调用成员函数 那么请不要在此处回答或评论