catch 语句中可以发生复制省略吗?

2023-11-26

考虑一个带有带有副作用的复制构造函数的异常类。

编译器可以在这里跳过调用复制构造函数吗:

try {
    throw ugly_exception();
}
catch(ugly_exception) // ignoring the exception, so I'm not naming it
{ }

那这个呢:

try {
    something_that_throws_ugly_exception();
}
catch(ugly_exception) // ignoring the exception, so I'm not naming it
{ }

(是的,我知道这一切都很丑陋,这是受到启发的另一个问题)


是的,在投掷和接球过程中都可以忽略它。对于捕获来说,只有当 catch 子句中指定的类型与异常对象的类型相同(除了 cv 限定)时,才可以忽略它。有关更正式和详细的描述,请参阅 C++11 12.8/31。

...这种复制/移动操作的省略称为复制省略,在以下情况下是允许的(可以组合起来消除多个副本):

...

  • 在 throw 表达式中,当操作数是非易失性自动对象(函数或 catch 子句参数除外)的名称时,其范围不超出最内层封闭 try 块的末尾(如果有一个),通过将自动对象直接构造到异常对象中,可以省略从操作数到异常对象(15.1)的复制/移动操作

...

  • 当异常处理程序的异常声明(第 15 条)声明与异常对象(15.1)相同类型(cv 限定除外)的对象时,可以通过将异常声明视为如果除了执行异常声明所声明的对象的构造函数和析构函数之外,程序的含义将保持不变,则为异常对象的别名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

catch 语句中可以发生复制省略吗? 的相关文章

  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • 如何手动清除特定的视图模型?

    据我了解 当我们在片段中调用此代码时 我们将从 Activity ViewModelStore 获得一个视图模型实例 viewModel ViewModelProviders of activity get SharedViewModel
  • 在哪里可以找到好的 ASP.NET MVC 示例? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 过去两年我一直在使用 Castle MonoRail 但在新工作中我将引入 ASP NET MVC 我了解观点 行动等的基础知识 我只需要为具有 M
  • 通过 GLFW 进行鼠标输入的简单 OpenGL 程序中出现明显的延迟

    这是一个简单的程序 它沿着鼠标光标的位置绘制一个三角形 我 希望你 能注意到的是 三角形落后于光标 它不像拖动整个窗口时那么紧 所以我的问题是 我做错了什么 是什么导致了这种滞后 我意识到的一件事是 移动三角形的实际像素值就足够了 而不必一
  • 防止 Jersey 客户端在发布大文件时导致内存不足错误

    使用以下方法将大文件作为 InputStream 放置时Jersey在客户端 看起来文件的全部内容在发送到服务器之前都被缓冲到内存中 当 JVM 耗尽堆空间时 这会导致大文件出现问题 如何防止 Jersey 客户端出现这种行为 服务器端的J
  • 无法从 jquery 对象调用 Javascript 方法?

    我正在阅读 Learning jQuery 1 3 Jonathan Chaffer 和 Karl Swedberg 在对表进行排序时 他们使用了 get 打电话之前 sort 并且说 我们需要将 jQuery 对象转换为 DOM 节点数组
  • Numpy“逻辑或”用于两个以上的参数

    Numpy s logical or函数需要不超过两个数组进行比较 如何找到两个以上数组的并集 对于 Numpy 也可以提出同样的问题logical and并获得两个以上数组的交集 如果你问的是numpy logical or 那么不 正如
  • C++ 类模板未定义对函数的引用[重复]

    这个问题在这里已经有答案了 当我在主函数中调用模板类 add 和 greater 中的两个函数时 我不断收到未定义的引用 所以我有 编号 h ifndef NUMBER H define NUMBER H template
  • HTML 5 添加 XML 命名空间

    谁能告诉我如何向 HTML 5 文档添加额外的 XML 命名空间 我正在尝试创建以下内容的 HTML 5 版本 这只是删除 xhtml 命名空间的情况吗 Thanks 根据 WHATWG 在 html 5 中 只要命名空间是 就可以在每个
  • 如何在 Mac OS X 上安装适用于 Python 2.7 的 Bloomberg API 库

    我正在尝试设置我的 Mac OS X 系统以使用pdblpPython 库需要我先安装适用于 Python 的 Bloomberg 开放 API 库 克隆 git repo 并运行后python setup py install I get
  • PythonNet FileNotFoundException:无法找到程序集

    我正在尝试执行一个使用 Python For Net 的 Python 脚本 https github com pythonnet pythonnet 加载名为 Kratos 3 dll 的 C 库 该库与脚本位于同一文件夹中 但找不到该文
  • 在 C# 中操作 RichText 的更好方法?

    我需要创建一些具有标准 格式 如粗体 斜体 缩进等 的 RichText 并将其复制到剪贴板 我现在这样做的方式似乎有点不优雅 我正在创建一个 RichTextBox 项目并通过它应用我的格式 如下所示 RichTextBox rtb ne
  • 如何异步调用我的 WCF 服务?

    我有一个从 Windows 服务调用的 WCF 服务 WCF 服务运行一个 SSIS 包 该包可能需要一段时间才能完成 我不希望我的 Windows 服务必须等待它完成 如何使 WCF 服务调用异步 或者默认情况下是异步的 MSDN 的以下
  • 如何使用 pip 从 Conda 安装 rdkit 包?

    我正在尝试使用 pip3 安装 rdkit 但这不起作用 sudo pip3 install rdkit Error Could not find a version that satisfies the requirement rdkit
  • node.js - 按时附加事件处理程序

    我正在学习 Node js 并在 Node js 手册中发现了这个示例 var req http request options req end req on upgrade function res socket upgradeHead
  • 如何捕获JFrame的关闭按钮单击事件?

    我想调用一个方法confirmExit 当单击 JFrame 标题栏的红色关闭按钮时 我怎样才能捕获该事件 如果用户选择不继续 我还想阻止窗口关闭 import javax swing JOptionPane import javax sw
  • 使用 $.ajax 调用 Web 方法时出现身份验证失败错误

    当我进行 JQuery 调用时 我收到身份验证失败响应 Message Authentication failed StackTrace null ExceptionType System InvalidOperationException
  • rhandsontable 更改特定行的背景

    我在 R闪亮中使用rhandsontable 我想更改第一列中带有 Sum 的行的颜色 由于行数不固定 因此根据行号选择 Sum 行不起作用 我已经尝试了附加的代码 不幸的是它不起作用 非常感谢您的帮助 library shiny libr
  • Moq 来自派生类的基类函数

    我是 Moq 的新手 刚刚观看了 Moqing 上的pluralsight 视频 所以我觉得自己有能力去编写一些测试 我有一个基类 比如说 Sheet 它实现了 ISheet 接口 Sheet 是页面的基类 abstract class S
  • tomcat在Windows上使用intellij-idea启动问题

    我正在尝试将 spring mvc 项目从 jboss 7 1 1 移动到 Tomcat 8 我通过 Windows 服务包安装了 Tomcat 8 并且它成功运行 我正在使用 intellij 为项目部署分解的 jar 但 Tomcat
  • catch 语句中可以发生复制省略吗?

    考虑一个带有带有副作用的复制构造函数的异常类 编译器可以在这里跳过调用复制构造函数吗 try throw ugly exception catch ugly exception ignoring the exception so I m n