通过初始化列表实例化抽象类[重复]

2024-01-04

我想了解为什么编译器允许编译以下代码

#include <iostream>

struct A
{
    A()
    {
        std::cout << "A::A\n";
    }

    virtual void f() const = 0;
};

void g(const A& a)
{
    a.f();
}

int main()
{
    g({});
}

它甚至输出A::A运行时。

如果我更换g({}) with g(A())它显然无法编译。它抱怨说A是抽象的,无法实例化。 Clang 和 GCC 都可以正常编译,没有任何警告。运行两个版本时打印pure virtual method called并终止。


这看起来像一个已知的g++ 错误号 70939 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70939:

所有版本的 g++ 都允许创建抽象类的对象

g++ 成功编译格式错误的 C++ 程序

class A {
public:
    A() {
        printf("A()\n");
    }
    virtual void b() const = 0;
};
int main() {
    const A& a{};
    a.b();
    return 0;
}

您的代码执行与此行相同的操作

const A& a{}

作为...的一部分g({})调用。

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

通过初始化列表实例化抽象类[重复] 的相关文章

  • System.MissingMethodException:找不到方法?

    以前工作的 ASP NET WebForms 应用程序现在抛出此错误 System MissingMethodException 找不到方法 The DoThis方法位于同一个类上 它应该可以工作 我有一个这样的通用处理程序 public
  • 限制纬度和经度值的模数

    我有代表纬度和经度的双精度数 我可以轻松地将经度限制为 180 0 180 0 具有以下功能 double limitLon double lon return fmod lon 180 0 360 0 180 0 这是有效的 因为一端是排
  • C# 动态 Linq 变量Where 子句

    我正在按照 Scott Gu 的文章创建动态 LINQhttp weblogs asp net scottgu archive 2008 01 07 dynamic linq part 1 using the linq dynamic qu
  • 堆栈独立的C/C++蓝牙API?

    我想知道是否有适用于 Windows XP Vista 7 x86 和 x64 的堆栈独立 C C 蓝牙 api 我的目标是创建连接并通过蓝牙发送 接收一些时间关键的数据 我的研究给了我以下选择以及这项任务的缺点 用于蓝牙的 Windows
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 将 gcov 与 CMake/CDash 结合使用的详细指南?

    我在我的项目中使用 CMake 并设置了 cdash 服务器以进行连续 夜间构建 一切运行良好 通过设置 crontab 我们可以将每小时 每晚的构建 测试结果自动上传到我们的 cdash 服务器 我的下一步是将测试覆盖率报告添加到构建中
  • EASTL 与 STL 相比,std::vector::operator[] 怎么会有这么大的性能差异

    根据http www open std org jtc1 sc22 wg21 docs papers 2007 n2271 html http www open std org jtc1 sc22 wg21 docs papers 2007
  • 输入缓冲区刷新

    考虑下面的代码 include
  • 使用 microsoft word.interop 删除 Word 文档中的空白页

    我创建了一个Word文档 它使用以下命令生成动态内容词互操作 它有一些分页符之间使用 我面临的问题是 此分页符会创建我不想向用户显示的空白页面 在某些情况下 我需要在那里添加这些分页符以维护页面布局 因此我无法考虑删除这些分页符 但我想要的
  • 为什么long long 2147483647 + 1 = -2147483648? [复制]

    这个问题在这里已经有答案了 为什么这段代码不打印相同的数字 long long a b a 2147483647 1 b 2147483648 printf lld n a printf lld n b 我知道int变量的最大数量是2147
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 从 Linq 的列表中选择多个字段

    在 ASP NET C 中 我有一个结构 public struct Data public int item1 public int item2 public int category id public string category
  • 在 C# 4.0 中,是否可以从泛型类型参数派生类?

    我一直在尝试这个 但我似乎无法弄清楚 我想做这个 public abstract class SingletonType
  • 为什么 C# 编译的正则表达式比等效的字符串方法更快?

    每次我必须对字符串执行简单的包含或替换操作 其中我正在搜索的术语是固定值 时 我发现如果我获取示例输入并对其进行一些分析 则使用编译的正则表达式是几乎 总是比使用 String 类中的等效方法更快 我尝试过比较多种方法 hs是要搜索的 干草
  • System.Drawing.Icon 构造函数抛出“操作成功完成”异常

    在 Windows XP 计算机上 以下代码抛出 System ComponentModel Win32Exception 并显示消息 操作成功完成 System Drawing Icon icon new System Drawing I
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • g++4.9 不支持 std::align

    在学习对齐问题等时 我意识到我的 g 4 9 macports OS X 实现不支持std align 如果我尝试编译 使用 std c 11 此示例代码来自http www cplusplus com reference memory a
  • C中的pipe()和fork()

    我需要创建两个子进程 一个子进程需要运行命令 ls al 并将其输出重定向到下一个子进程的输入 而下一个子进程又将对其输入数据运行命令 sort r n k 5 最后 父进程需要读取该数据 已排序的数据 并将其显示在终端中 终端中的最终结果
  • 可选参数代码在 .NET 3.5 中编译。为什么?

    这段代码在 VS 2010 的框架 3 5 项目中编译正常 我三次检查过 public LoggingClient string uri net msmq localhost logging 为什么 我在 C 4 规范中没有看到任何内容 文
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi

随机推荐

  • Material UI DatePicker 显示错误的日期

    Material UI Pickers 中显示的日期比所选日期晚 1 天 我选择了25号 formik中的值是25号 但表单上显示的值是24号 date io date fns 1 3 13 date fns 2 9 0 import Da
  • JavaScript按键事件获取文本区域的最终值

    我想知道是否有可能得到最终结果keypress事件 目前 我正在使用keyup因为它被激活了after用户已经在 texteara 中完成了文本编辑 但我编写了一个使用 Mootools 库执行类似操作的方法 input addEvent
  • “ASP.business_aspx”不包含“submitSearchClick”的定义,并且没有扩展方法“submitSearchClick”

    每次我尝试在我的网站上运行页面时 我都会不断弹出此错误 ASP business aspx 不包含 submitSearchClick 的定义 并且找不到接受 ASP business aspx 类型的第一个参数的扩展方法 submitSe
  • 有没有更好的方法来解析字符串?

    我想知道 NET 中是否有内置方法来解析字符串的位 以我有以下字符串为例 bsarbirthd0692 由以下部分组成 稍后将交叉引用数据 Indexes Purpose 0 3 name 4 9 description 10 13 dat
  • Windows API 有滚动条控件吗?

    在Delphi中 有一个组件叫做TScrollBox 它允许您将滚动条添加到TImage成分 我需要在纯 Windows API 中向图像添加滚动条 那么Windows API有这样的控件吗 我找到的只有这个1993年文章 https ms
  • TestCafe 有没有办法验证 Chrome 网络调用?

    我有一个测试用例 我需要导航到网页并验证该页面的 chrome 浏览器中的网络调用 理想情况下 我会将它们放入一个变量中 并针对某些与分析相关的调用过滤它们并验证它们的值 这可以通过 Selenium 中的 chrome 功能来完成 请参阅
  • 使用 FBO 渲染多个深度信息

    我正在尝试实现一个着色器 计算通过两个表面的光折射 物体的背面和正面 为此 我需要使用正常深度测试 GL LESS 和反向深度测试 GL GREATER 渲染折射几何形状 它允许我计算从背面到正面的距离 不幸的是 我一次只能渲染其中一个 而
  • 通过 ansible playbook 从 git 克隆特定分支

    我正在使用 ansible 来部署我的应用程序 我使用以下命令从 github 克隆应用程序 name Deploy site files from Github repository sudo yes git email protecte
  • Spark-将 JavaRDD 保存到 Cassandra

    This link http www datastax com dev blog accessing cassandra from spark in java显示了一种保存方法JavaRDD to Cassandra这样 import st
  • npm 警告已弃用 [电子邮件受保护]:graceful-fs 版本 3

    我正在运行 npm install 但它给了我一个错误 我还尝试在更新之前运行以下命令 npm install npm 并且我还更新了 Graceful fs npm install g graceful fs email protecte
  • javax.ws.rs.ProcessingException:找不到内容类型 application/json 的 writer

    我是 REST Web 服务的新手 我正在尝试 post 和 consumes 注释 如下所示 POST Path post Consumes application json public Response createProductIn
  • Google App Engine 和 jQuery Ajax 导致管道损坏错误

    我有一个非常标准的案例 我尝试通过 jQuery 的 Ajax 提交一些 JSON 数据 我的 JavaScript 代码如下所示
  • Fragment onResume() 和 backStack 问题

    当我从另一个片段回来时 我陷入了恢复片段的困境 设想 我有一个Fragment A 现在我正在打开多个片段Fragment A say A1 A2 A3 使用框架布局 现在我正在启动一个新的片段说Fragment B从 A1 A2 A3 之
  • jQuery 显示 setTimeout 计时器

    我正在尝试构建一个简单的倒计时应用程序 是否可以在 setTimeout 上显示计时器值 或者我必须使用 for 循环 Thanks with setTimeout var n 100 setTimeout countDown 1000 f
  • SimpleCursorAdapter 和 CursorAdapter

    我想知道 CursorAdapter 和 SimpleCursorAdapter 之间有什么区别 人们会根据什么标准选择其中之一 您与他们合作的经历 谢谢 我认为主要问题还没有得到解答 SimpleCursorAdapter 的存在是为了那
  • Java 中的尾部调用优化

    从 Java 8 开始 Java 不提供尾部调用优化 TCO 经过研究 我了解到这是 在 JDK 类中 有许多安全敏感方法 它们依赖于计算 JDK 库代码和调用代码之间的堆栈帧来确定谁在调用它们 然而 基于 JVM 的 Scala 支持尾部
  • 文件丢失 在文件系统中,捕获表单提交

    我有一个通过 jQuery 提交的表单ajaxSubmit 功能 此表单包含一个文件控件 并且已提出一个可能的故障点 如果在提交表单之前所选文件被重命名 删除或以其他方式变得不可访问 则该表单可能会或可能不会根据浏览器提交 虽然提交失败是预
  • 使用 PyDict_SetItemString 进行引用计数

    我想知道当将新值设置到 PyDict 在 C 扩展内 内的现有字段中时 内存管理 引用计数如何工作 例如 假设按以下方式创建和填充字典 myPyDict PyDict New tempPyObj PyString FromString Or
  • 读取科学计数法 scanf

    我正在开发一个程序 它应该只有一个 scanf 函数 并且应该能够接受科学计数法和实数的输入 任何帮助将不胜感激 根据scanf文档 http en cppreference com w c io fscanf f匹配浮点数 数字的格式与预
  • 通过初始化列表实例化抽象类[重复]

    这个问题在这里已经有答案了 我想了解为什么编译器允许编译以下代码 include