什么时候调用临时的析构函数

2023-11-24

我想知道 C++03 和 C++11 何时调用临时的析构函数

假设我有以下情况

foo method()
{
   foo f;
   ......
   ......
   return foo;
}

void doSomething()
{
   foo f = method();
   ....
}

假设我正在使用标志-fno-elide-constructors因为我想从理论上了解何时调用临时的析构函数。 所以从上面的代码中C++03当。。。的时候method()已完成副本foo是使用其复制构造函数创建的。之后在声明中foo f = method()的复制构造函数foo再次被调用。在这种情况下,对于 C++03,何时 是此临时对象的析构函数(由method)叫?是否在范围末尾调用doSomething()现在我想将相同的情况应用于 C++11,其中涉及移动语义。如果是 C++11,当method返回一个副本foo然后当foo f = method()被调用 foo 的移动构造函数被调用。因此,在 C++11 中,临时对象的析构函数何时返回method()叫?


我想知道 C++03 和 C++11 何时调用临时的析构函数

R 值(临时)的析构函数在表达式末尾调用。

给出你的代码:

foo method()
{
   foo f;
   ......
   ......
   return foo;
}

void doSomething()
{
   foo f = method();
   ....
}

method() 创建一个对象。当该对象超出范围(在方法末尾)时,将调用析构函数(在没有优化的情况下)。

调用“foo f=”... 会导致调用 foo 的复制构造函数。之后表达式结束,导致返回的对象(临时)被破坏。当对象“f”在 doSomething 结束时超出范围时,会调用该对象的析构函数。

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

什么时候调用临时的析构函数 的相关文章

随机推荐

  • 使用 React Native WebSockets 发送 Cookie

    所以我使用的是本机反应网络套接字但不知道如何在 websocket 中包含 cookie 有什么建议吗 目前还没有自动的方法来做到这一点 WebSocket 构造函数有第三个 未记录的 参数 用于将自定义 HTTP 标头传递给连接请求 We
  • SignalR OnConnected 和 OnDisconnected 未触发

    我的集线器中的 OnConnected 和 OnDisconnected 覆盖无法触发 我遇到了问题 出于复制目的 我有一个非常简单的集线器 public class OnlineHub Hub public void TestMethod
  • 在 C# 中重复一个函数,直到它不再抛出异常

    我有一个调用 SOAP 接口并返回数据数组的类 但是 如果此请求超时 则会引发异常 这很好 但是 我希望我的程序尝试再次进行此调用 如果超时 我希望它继续拨打此电话 直到成功为止 我怎样才能做到这一点 例如 try salesOrdersA
  • 将组合框的 ItemsSource 设置为整数数组?

    将组合框的 ItemsSource 设置为整数数组
  • 使用反向一对一字段将 django 模型序列化为 JSON

    假设我有以下两个 django 1 3 模型 from django db import models class Patient models Model name models CharField Name max length 50
  • 在构造函数内注册事件?

    我一直在研究委托 事件和匿名方法 这样一来 有一点就变得非常清楚了 它不会简化在构造函数中注册任何事件方法或委托函数的过程吗 我的测试表明它是有效的 并且它可以防止您在实例化后必须声明它们 因为对象的构造函数会为您执行此操作 事实上 性能还
  • 如何检查程序是否已安装,如果没有则安装?

    由于完整性检查 我宁愿不使用 WMI 这是我所拥有的不起作用 tempdir Get Location tempdir tempdir tostring reg32 HKLM Software Microsoft Windows Curre
  • 解决元类冲突

    我需要创建一个根据某些条件使用不同基类的类 在一些课程中 我得到了臭名昭著的 TypeError metaclass conflict the metaclass of a derived class must be a non stric
  • 使用 ggplot2 绘制相关矩阵图

    我想创建一个相关矩阵图 即每个变量相对于其他变量绘制在散点图中的图 例如pairs or splom 我想用 ggplot2 来做到这一点 请参阅此处的示例 该链接提到了一些人为在 ggplot2 中执行此操作而编写的一些代码 但是 它已经
  • Java 中的类何时以及如何进行垃圾回收?

    我问了一个关于Java中垃圾收集的问题这个话题 但我得到的答案却给了我另一个问题 有人提到类也可以被垃圾收集器收集 这是真的 如果这是真的 这是如何运作的 当没有任何对象引用 Java 中的类时 它可能会被垃圾回收 在大多数简单的设置中 这
  • ruby 继承与 mixins

    在 Ruby 中 由于您可以包含多个 mixins 但只能扩展一个类 因此看起来 mixins 比继承更受青睐 我的问题 如果您正在编写必须扩展 包含才能有用的代码 为什么要把它变成一个类 或者换句话说 为什么不总是把它做成一个模块呢 我只
  • 将数组排序到索引数组指定的容器中的最有效方法?

    任务举例 data np array 1 2 3 4 5 6 7 8 9 idx np array 2 0 1 1 2 0 1 1 2 预期结果 binned np array 2 6 3 4 7 8 1 5 9 限制条件 应该很快 应该O
  • 如何防止 MFMailComposeViewController 取消时崩溃?

    某处 if MFMailComposeViewController canSendMail MFMailComposeViewController email vc MFMailComposeViewController alloc ini
  • 使用 parsley.js 异步提交表单

    我正在尝试创建一个使用 Parsley js 验证前端并异步提交的表单 该表单称为 contactForm 提交按钮是 sendData 当我在空或无效表单上点击 提交 时 就会出现错误 我希望看到来自无效表单数据的 错误 警报 但它只是继
  • 如何测试另一个安装是否已在进行中?

    假设我正在尝试在 Windows 上自动安装某些内容 并且我想在尝试安装之前尝试测试是否正在进行另一个安装 我无法控制安装程序 必须在自动化框架中执行此操作 有没有更好的方法来做到这一点 一些 win32 api 而不只是测试 msiexe
  • 如何使用 Typescript 的声明与从模块导入的接口合并?

    https www typescriptlang org docs handbook declaration merging html 上面的链接提供了有关声明与接口合并的信息 我希望能够使用具有通用组件的界面来做到这一点 我目前正在使用
  • .NET 中的全局与单例

    我这里有一个很常见的情况 多年来 我一直没有发现我所做的事情是否符合行业标准 考虑一个连接到数据库的应用程序 但连接字符串不是存储在某些文件 设置中 而是作为命令行参数传递在启动时或在应用程序启动时浏览数据库 那么有必要将该连接字符串保存在
  • AppBarLayout 与嵌套片段中的 recyclerView

    由于图像总是比文字更好 我向您展示我当前的布局 工具栏 选项卡位于带有 viewPager 的 Activity xml 中 而 recyclerView 位于 viewPager 内的片段内 因此您可以向右 向左滑动来查看其他内容 我的问
  • 如何确定二进制字符串的统计随机性?

    如何确定二进制字符串的统计随机性 因此 我如何编写自己的测试 并返回与统计随机性相对应的单个值 即 0 到 1 0 之间的值 0 不是随机的 1 0 是随机的 该测试需要适用于任何大小的二进制字符串 当您使用笔和纸执行此操作时 您可能会探索
  • 什么时候调用临时的析构函数

    我想知道 C 03 和 C 11 何时调用临时的析构函数 假设我有以下情况 foo method foo f return foo void doSomething foo f method 假设我正在使用标志 fno elide cons