2

我的问题是参考以下链接:

为什么要使用 ref 限定符 & 声明已删除的赋值运算符

我应该为赋值运算符使用左值引用限定符吗?

我无法关注这些​​帖子。有人可以解释一下:

  1. &给定代码段末尾的实际作用是什么?auto operator=(const string& rhs) &;.
  2. 为什么&这个给定代码片段的末尾是多余的?(还请确认它是多余的还是有问题的)auto operator=(const string& rhs) & = delete;
  3. 这个陈述是否有效,auto operator=(const string&& rhs) &&;

如果限定符&阻止右值的复制分配,它是否已经被指定的输入参数的类型注意?( const string& rhs)。

在以下示例中,无论有无限定符,右值赋值都得到相同的结果。

class copy_assignment{
   public: 
   copy_assignment& operator=(copy_assignment& a) & {cout << "copied"; return a;}; 
   copy_assignment* get_ca(){return new(copy_assignment);}
};

int main()
{
    copy_assignment a, b;
    a = *b.get_ca();
}
4

0 回答 0