gpt4 book ai didi

c++ - 依赖隐式声明的 move 构造函数是否安全?

转载 作者:行者123 更新时间:2023-12-02 02:24:32 27 4
gpt4 key购买 nike

这是我获得大部分信息的地方:http://en.cppreference.com/w/cpp/language/move_constructor

显然,这些是隐式生成的 move 构造函数工作的条件:

  • 没有用户声明的复制构造函数
  • 没有用户声明的复制赋值运算符
  • 没有用户声明的 move 赋值运算符
  • 没有用户声明的析构函数
  • 隐式声明的 move 构造函数未定义为已删除
  • 如果存在用户声明的 move 构造函数,仍然可以使用关键字 default 强制生成隐式声明的 move 构造函数

我的问题是:

  1. 依赖隐式自动 move 构造函数安全吗?
  2. 如何检查它是否确实有效而不是默认的复制构造函数?
  3. 最后,也是最重要的一点,这是一个好主意吗?为什么?还是定义我自己的总是更好?

我更倾向于遵循三规则并手动创建析构函数、复制和 move 构造函数以及复制和 move 赋值运算符,但我只是对此感到好奇>隐式一个。

最佳答案

以下是您问题的答案:

  1. “安全”是什么意思?当规则适用时,即子对象是可 move 的,并且您没有做任何事情来破坏 move 构造函数的生成,它将被创建并在存在时使用。但请注意,很容易有一个不可 move 的子对象,这会在某种程度上无形地抑制 move 构造函数的创建。
  2. 要查看您的类是否有 move 构造函数,只需在使用复制和 move 构造函数时临时添加一个空的基本日志记录,并强制 move/复制对象:它将记录相应使用的构造函数。
  3. 没有任何代码通常比任何代码都好。

关于c++ - 依赖隐式声明的 move 构造函数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18424183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com