我对值初始化的尝试被解释为函数声明,为什么 A a(()); 不被解释为函数声明?解决这个问题?

2023-12-08

Stack Overflow 教给我的许多东西中,有一个就是所谓的“最令人烦恼的解析”,它通常用这样的行来演示:

A a(B()); //declares a function

虽然对于大多数人来说,直观上这似乎是一个对象的声明a类型的A,暂时采取B对象作为构造函数参数,它实际上是一个函数的声明a返回一个A,获取一个指向返回的函数的指针B并且它本身不带任何参数。同样的线

A a(); //declares a function

也属于同一类别,因为它声明的不是一个对象,而是一个函数。现在,在第一种情况下,解决此问题的通常方法是在B(),因为编译器会将其解释为对象的声明

A a((B())); //declares an object

但是,在第二种情况下,执行相同操作会导致编译错误

A a(()); //compile error

我的问题是,为什么?是的,我非常清楚正确的“解决方法”是将其更改为A a;,但我很想知道额外的是什么()对于第一个示例中的编译器执行的操作在第二个示例中重新应用它时不起作用。是个A a((B()));解决写入标准的特定异常?


没有开明的答案,只是因为它没有被 C++ 语言定义为有效语法......所以根据语言的定义,情况就是如此。

如果你确实有一个表达式,那么它是有效的。例如:

 ((0));//compiles

更简单地说:因为(x)是一个有效的 C++ 表达式,而()不是。

要了解有关如何定义语言以及编译器如何工作的更多信息,您应该了解形式语言理论或者更具体地说上下文无关语法 (CFG)以及有限状态机等相关材料。如果您对此感兴趣,尽管维基百科页面还不够,但您必须买一本书。

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

我对值初始化的尝试被解释为函数声明,为什么 A a(()); 不被解释为函数声明?解决这个问题? 的相关文章

  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 当我尝试传递临时地址作为参数时,它是一个 UB 吗?

    对于以下 C 代码 include
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • 将同步 zip 操作转换为异步

    我们有一个现有的库 其中一些方法需要转换为异步方法 但是我不确定如何使用以下方法执行此操作 错误处理已被删除 该方法的目的是压缩文件并将其保存到磁盘 请注意 zip 类不公开任何异步方法 public static bool ZipAndS

随机推荐

  • 使用 PDFBox 拆分大型 Pdf 文件会得到大型结果文件

    我正在使用 pdfbox 处理一些大型 pdf 文件 高达 100MB 大约 2000 页 有些页面包含二维码 我想将这些文件分割成更小的文件 页面从一个二维码到下一个二维码 我得到了这个 但结果文件大小与源文件相同 我的意思是 如果我将一
  • 具有从 C# 到非托管驱动程序的嵌入式指针的编组结构

    我正在尝试使用 P Invoked DeviceIoControl 调用将 C NET Compact Framework 3 5 与 Windows CE 6 R2 流驱动程序连接起来 对于 IOCTL 代码之一 驱动程序需要一个 Dev
  • 当准备 segue 数组不包含数据时(使用 swift)

    根据按下的按钮 我想将单词列表附加到在开始时声明的变量 pickedList 当我准备继续时 它会覆盖已添加的内容 并且仅使用开始时添加的空数组 我可以在准备继续位中添加项目并将这些项目转移过来 但这不是我想要的 我对编程非常陌生 并且进行
  • JavaFx - 更新 GUI

    我想要的只是在程序运行时更新标签 我正在读取一些文件 我希望它显示正在读取的文件的名称 但是 它仅使用以下代码显示最后一个文件 基本上 GUI 在整个过程完成之前不会响应 static Text m status update new Te
  • 在 Windows 10 中启用 cURL

    我已经在笔记本电脑上设置了本地服务器 Windows 10 家庭单语言 64 位版本 1803 我已经下载并手动安装apache24 php7 MySQL php我的管理员 and 文字新闻通过遵循这个tutorial 我正在尝试启用 cU
  • 从mysql数据库提取数据时如何在mpdf中换行

    我正在使用 MPDF 从 mysql 数据库中存储的数据生成 pdf 文件 虽然我可以按预期提取和显示其他数据 但我无法显示多行文本 因为它们都在单行中 有人可以帮我解决这个问题吗 例如 我来自文本区域的数据在数据库中显示为 一 Two T
  • 加载和释放NSImage时内存持续增加

    我遇到一个问题 我的应用程序在连续加载图像文件时会大量消耗内存到 崩溃点 例如 考虑以下代码 该代码重复加载和释放 15MB JPEG 文件 用于测试目的的大文件大小 NSURL inputUrl NSURL URLWithString f
  • 在 JavaScript 中运行 PHP 代码?这个可以用吗?

    我不确定 PHP 行是否可以在 JavaScript 函数内运行 例如 我没有尝试过运行这个 但我不认为你可以像这样运行 PHP 有人可以帮忙吗 我可以在 javascript 函数中运行 PHP 脚本 而不通过 Ajax 调用外部 PHP
  • Angular 文件上传进度百分比[重复]

    这个问题在这里已经有答案了 在我用 Angular 4 开发的应用程序中 用户可以将多部分文件上传到服务器 文件很大 我需要向用户显示文件上传过程的当前进度及其百分比 我该怎么做 提前致谢 这适用于 Angular 9 和 10 note
  • 在 C# 中使用 OpenGL? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有免费的 C OpenGL 支持库吗 如果是 我应该使用哪一个 在哪里可以找到示例项目 C 是否提供 OpenGL 类 OpenTK是对 Tai A
  • 从服务器端动态检索 GridPanel 模型/存储/列

    我有一个 GridPanel 在 DB SP 返回表的列之后 必须动态创建其存储模型和列模型 我的问题是如何将值 字符串或 JSON 从服务器传递到 GridPanel Ext define Base GridPanel extend Ex
  • 在 matplotlib 中绘制带中点箭头的圆形 fancyarrowpatch

    我一直在尝试突破 matplotlib 补丁的界限并指示它绘制圆形FancyArrowPatch中点有一个方向箭头 这在我尝试创建的网络表示中非常有用 我使用 python 的编码时间还没有达到两位数 所以我不能说我对 matplotlib
  • 有谁知道如何修复此错误以将 Findbugs 安装到 Netbeans 8.2 中?

    将 Findbugs 安装到 Netbeans 8 2 时出现以下错误 There were some problems while storing Establishing a connection Cause Cannot resolv
  • 列出 Pub/Sub 订阅使用者

    服务可以对发布 订阅订阅进行长轮询 这显然需要在 pub sub 服务和客户端之间不断打开 TCP 连接 有什么方法可以查明某个订阅是否打开了该 TCP 连接吗 没有办法列出 Pub Sub 订阅的所有消费者 不 这会很困难 因为存在三种不
  • SQL Server 2005 某些数据库对象的搜索视图

    SQL Server 中有没有一种方法可以列出数据库中从特定对象连接的所有视图 即 查找从表 myTable 加入的所有视图 您可以使用sys sql dependencies select object name object id fr
  • 我可以通过基类类型的引用访问子类方法吗?

    下面是我正在尝试处理但无法解决问题的代码片段 我真的可以用 Java 执行以下操作吗 如果是 请帮助了解我 如何 如果不是 为什么 看看下面的代码 class Base public void func System out println
  • 使用正则表达式替换 CSV 中引号之间的逗号

    例如 我们有一个像这样的字符串 COURSE 247 28 4 2016 12 53 Europe Brussels 1 Verschil tussen merk product en leveranciersverantwoordelij
  • 没有焦点的按键事件

    我正在编写一个简单的 GUI 它将在特定点打开一个 opencv 窗口 这个窗口有一些非常基本的 keyEvents 来控制它 我想通过一些功能来推进这一点 由于我的 QtGui 是我的控制器 因此我认为使用 KeyPressedEvent
  • 闪亮的应用程序:保持面板在多个视图中保持一致

    在 Shiny 中 我想保持一些面板 下面的面板 1 在多个视图 下面的绘图视图 1 和 2 中保持一致 下面我可以在 Plotview2 中显示 panel1 但是 该面板在此视图中不起作用 目标是能够通过多个 绘图视图 拥有一些一致的
  • 我对值初始化的尝试被解释为函数声明,为什么 A a(()); 不被解释为函数声明?解决这个问题?

    Stack Overflow 教给我的许多东西中 有一个就是所谓的 最令人烦恼的解析 它通常用这样的行来演示 A a B declares a function 虽然对于大多数人来说 直观上这似乎是一个对象的声明a类型的A 暂时采取B对象作