用于隐式声明的移动赋值运算符的用户声明是什么意思?

时间:2018-05-03 07:57:18

标签: c++11 move-semantics move-assignment-operator

声明

  

隐式声明的移动分配运算符

     

如果没有为类提供用户定义的移动赋值运算符   type(struct,class或union),以下所有内容均为true:

     

没有用户声明的副本构造函数;
   没有用户声明的移动构造函数;
   没有用户声明的复制赋值运算符;
   没有用户声明的析构函数;

使用用户声明的复制分配运算符仅表示

  

class_name& class_name :: operator =(class_name&&)

任何 if let userDefaults = UserDefaults(suiteName: "group.com.example.myapp") { let myFlag = userDefaults.bool(forKey: "myFlag") } 已定义?

示例:

operator=()

这是否符合implitely声明的移动assigmnent运营商的条件?

隐式声明的移动构造函数也是如此。

1 个答案:

答案 0 :(得分:2)

请注意,它表示"用户声明的复制赋值运算符" (强调我的)。并非每个赋值运算符都是复制赋值运算符。

对于课程X copy 赋值运算符定义为operator=,其中包含XX&,{{类型的参数1}},const X&volatile X&。因此,const volatile X&不是副本赋值运算符,因此不会影响移动(或复制)赋值运算符的隐式声明。