通过 destruct+move 构造进行的移动分配安全吗?

2024-02-25

这是使用移动构造函数为大多数类定义移动赋值的一种非常简单的方法:

class Foo {
public:
  Foo(Foo&& foo);                     // you still have to write this one
  Foo& operator=(Foo&& foo) {
    if (this != &foo) {               // avoid destructing the only copy
      this->~Foo();                   // call your own destructor
      new (this) Foo(std::move(foo)); // call move constructor via placement new
    }
    return *this;
  }
  // ...
};

在标准 C++11 中,调用您自己的析构函数,然后在 this 指针上放置 new 的顺序是否安全?


除非您从未从此类派生类型。如果这样做,该物体就会变成一个怪物。不幸的是,该标准使用此作为解释对象生命周期的示例。在现实世界的代码中这是一件非常糟糕的事情。

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

通过 destruct+move 构造进行的移动分配安全吗? 的相关文章

  • fork 和 exec 之间的区别

    两者有什么区别fork and exec 指某东西的用途fork and exec它体现了 UNIX 的精神 它提供了一种非常简单的方法来启动新进程 The fork调用基本上复制了当前进程 在almost任何方式 并非所有内容都会被复制
  • 从数组中输入多个数字,每个数字检查是否为整数

    每个人 我希望有人能帮我弄清楚C语言的一些东西 这是我第一次认真地做IT方面的作业 我没有经验 而且我正在电子学习中学习 所以老师的帮助不是很好 我需要用C语言开发控制台应用程序 用户需要输入10个整数 如果插入的数字不是整数 需要输出错误
  • C++ 天花板函数的奇怪结果

    我一直在尝试天花板功能并得到一些奇怪的结果 如果我对十进制数乘以百执行 ceil 运算 我会得到一定的结果 但是 如果我直接对该乘法的结果执行 ceil 我会得到完全不同的输出 另一个问题是 这些不同的结果仅发生在某些数字上 任何帮助 将不
  • lambda 表达式到函数指针的转换

    这是这个问题的后续问题 Lambda 如何作为参数传递 https stackoverflow com questions 3321283 c0x lambda how can i pass as a parameter 据推测 MSDN
  • Visual Studio 2013 Intellisense 不会将枚举类型放在方法参数的位置

    例如 我有以下代码 namespace VS2013 EnumTypes class Program enum SomeEnum One Two static void SomeMethod SomeEnum someEnum some c
  • 用C#发送USSD?

    我想编写一个在 Windows Mobile 6 上运行的简单 C 应用程序 它可以发送 USSD 消息 有没有任何图书馆可以帮助我做到这一点 或者是否有任何示例解释如何使用线路发送USSD http msdn microsoft com
  • const_iterators 更快吗?

    我们的编码指南更喜欢const iterator 因为它们比正常的要快一点iterator 当您使用时 编译器似乎会优化代码const iterator 这真的正确吗 如果是的话 内部到底发生了什么使得const iterator快点 编辑
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • WCF 客户端返回空数组 - XML 响应似乎正常

    我正在尝试为我们的 Intranet 上托管的 Web 服务创建一个简单的 WCF 客户端 C 使用 Fiddler 和 SoapUI 我可以看到请求和响应似乎正常 但是当我运行代码时返回一个空数组 我会尝试只粘贴相关的行 但会是很多东西
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • 模板“内联”函数的静态局部变量[重复]

    这个问题在这里已经有答案了 static的局部变量inline如果我的理解是正确的 C 中的函数保证像单个全局变量一样存在 如果inline函数是一个模板 编译器可以在哪里生成该函数的多个版本 下面这篇文章应该很好地回答你的问题 http
  • 具有多重继承的不明确基数

    我正在尝试在一个大库中编写一些类的子类 我收到 基础不明确 错误 这是该问题的一个可编译示例 include
  • 访问结构向量

    我有一个结构 struct OutputStore int myINT string mySTRING 如果我创建一个 OutputStore 类型的数组 如下所示 OutputStore OutputFileData new Output
  • 使用 unrar 库 - 将文件提取到文件流缓冲区中

    我需要的是能够将 rar 文件中的文件提取到流中 我正在创建一个测试用例来了解如何使用解压源文件 http www rarlab com rar unrarsrc 3 9 9 tar gz 我已经搜索和修补了一段时间 但我不知道如何使用该库
  • 我的 Opencv 应用程序处理速度非常慢

    我正在构建一个 OpenCV 应用程序 它从相机捕获视频 并在删除背景后将其覆盖在另一个视频上 我无法达到合理的速度 因为它以大约 1 fps 的速度播放输出 而我的背景去除以 3 fps 的速度工作 有没有办法以正常速度显示背景视频并以
  • 使用可变参数模板函数计算多个值的平均值

    我正在尝试编写一个函数来确定任意数量参数的平均值 所有参数都具有相同的类型 出于学习目的 我尝试使用可变参数模板函数来做到这一点 这是我到目前为止所拥有的 template
  • int 类型的构造函数

    考虑到成本 这些情况是否相同 case 1 int a 5 case 2 int a 5 case 3 int a a 5 这三种语法是不同的 请耐心等待 我使用用户定义类型而不是 int 稍后我将回到 int T a 5 Direct i
  • 在运行时将项目添加到 ToolStrip

    您好 我有一个带有 收藏夹 菜单的 ToolStripMenu 我想在运行时在 WinForms 应用程序中添加子项目 我有一个 datagridview 右键单击它会显示一个包含 添加到收藏夹 选项的上下文菜单 当该事件被触发时 我想使用
  • 恐怖分子已弃用

    正在接听另一个问题 https stackoverflow com q 11830514 1468366 我偶然发现了man page http linux die net man 3 herror一个名为的函数herror 看起来很像pe
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G

随机推荐

  • 在海量数据集上学习决策树

    我正在尝试使用 MATLAB 从巨大 即无法存储在内存中 数据集构建二元分类决策树 本质上 我正在做的是 收集所有数据 Try out n数据的决策函数 选出最佳决策函数 https stackoverflow com questions
  • 为不受支持的语言选择本地化

    我有 en 和 ru 语言的本地化 如果用户选择任何其他语言 fr de 我需要显示俄语本地化变体 我尝试将 info plist 中的 本地化本机开发区域 更改为 ru 俄语 但在使用不受支持的语言时 它始终显示英语 有相关问题 http
  • iFrame 内的 cordova 回调

    我使用 cordova 和 nanohttpd 创建了一些 Android Web 应用程序 主页是通过 localhost url 从 nanohttp 加载的 主页包含一个 iFrame 它从与主页相同的域 localhost 加载一些
  • 将 nd 数组转换为键、值字典

    python中是否有一个函数可以将nd数组转换为字典 其中key是索引元组 value是该索引处的矩阵值 例如 A np random random 3 4 5 Result i j k A i j k 当然 你可以使用np ndenume
  • 在 iPhone SDK 中实现 Core-Plot 时出现错误:“CorePlot-CocoaTouch.h:没有这样的文件或目录”

    当我尝试在 iPhone 应用程序中实现 Core Plot 时 出现以下错误 CorePlot CocoaTouch h 没有这样的文件或目录 我从下面的链接下载安装了 Core plot 包 http code google com p
  • 通过电子邮件将 Sparkline 图表作为 Google Sheets 范围内的图像/博客/png 发送

    我尝试将此解决方案应用于我的案例 通过电子邮件发送 SPARKLINE 图表会发送空白单元格而不是数据 https stackoverflow com questions 50133870 emailing sparkline charts
  • S3方法帮助(roxygen2)

    我正在尝试在包中使用 S3 方法 并认为在此处提出问题后我明白了如何设置它 使用 Roxygen 构建 R 包时 S3 方法一致性警告 https stackoverflow com questions 14237018 s3 method
  • 如何在声明式管道中使用 NodeLabel 参数插件

    我正在尝试将我的自由式作业转换为声明性管道作业 因为管道提供了更大的灵活性 我不知道如何使用 NodeLabel 参数插件 https wiki jenkins io display JENKINS NodeLabel Parameter
  • 如何为提交按钮添加事件监听器

    我在这个 html 上遇到了很多麻烦 我正在尝试向提交按钮添加事件侦听器 以便最终可以更改文档以显示表单信息 问题是 当填写表单时 按钮侦听器不执行任何操作 它可以在 jsfiddle 和其他类似的东西中工作 但不能作为独立文件工作 这让我
  • div 中的水印背景图片

    我想从存储的图像创建水印 但水印会影响上层 并缩小所有分区的颜色 div style background url blogthreadlist blogUri no repeat background position center di
  • Hive alter table 更改列名称为重命名的列提供“NULL”

    我曾尝试将表中的现有列重命名为新列 但名称更改后 新列只给我 NULL 值 Parquet 中表的存储格式 例如 user 是 Test 表中字符串数据类型的列 插入了值为 John 的示例记录 Select user from Test
  • 如何编写 VB.Net Lambda 表达式

    我现在正在开发一个 VB net 项目 我是 VB Net LINQ 的新手 想了解 Lambda 的等效项 var new orders Select x gt x items gt 0 在 VB Net 中 有人请推荐一下 lambda
  • MongoDB 中不区分大小写的排序

    如何按给定字段对 MongoDB 集合进行排序 不区分大小写 默认情况下 我先得到 A Z 然后再得到 a z Update 截至目前 mongodb 的索引不区分大小写 Users find collation locale en sor
  • TensorFlow 将函数应用于矩阵变量的每一行

    嗨 我是 Tensorflow 的新手 我想要在 R 中做这样的事情 mat tf Variable matrix 1 4 nrow 2 apply mat 1 cumprod 这在 Tensorflow 中可行吗 无论是在 Python
  • 从node-webkit访问USB设备?

    我正在构建一个需要在所有 3 个主要桌面环境 Windows Mac 和 Linux 上运行的 Node WebKit 应用程序 我需要我的应用程序连接到插入的 USB 设备 但我在精确计算时遇到了一些麻烦如何解决这个问题 是否有一个适用于
  • 在powerpoint中使用vba将两个形状合并为并集

    我正在尝试使用 union 属性将两个相同的形状合并为一个 编译代码时 它显示对象 commandbar 的方法 executemso 失败 我是 vba 新手 所以如果有人帮助我解决这个问题那就太好了 Sub ShapesUnion Di
  • 在Jboss wildfly和docker中使用cli时出现权限错误

    我扩展了一个 docker 镜像 在构建 dockerfile 时 我调用 Wildfly CLI 添加数据源 然后 当我尝试运行 dockerfile 时 出现以下错误 appui dev local appui dev local JB
  • Rails 3.2 中每个模型是否可以有多个夹具文件?

    在 Rails 3 2 中 给定的 ActiveRecord 对象是否可以有多个固定文件 客户要求将测试数据写入固定装置中 但也希望它们易于管理 我想通过引入第二组来稍微分割一下固定装置 原始版本将包括 需要 渲染任何内容 我无法通过谷歌找
  • 重写 git 历史记录,使 crlf 保持一致

    我有一个 git 存储库 其中有 LF 和 CRLF 文件的细微变化 在进行可能的切换之前 我想重写父提交和当前提交具有 不同 LR CRLF 编码的提交 所以我尝试了以下 一行 稍作编辑 我尝试运行todos如果文件的父版本包含 CR g
  • 通过 destruct+move 构造进行的移动分配安全吗?

    这是使用移动构造函数为大多数类定义移动赋值的一种非常简单的方法 class Foo public Foo Foo foo you still have to write this one Foo operator Foo foo if th