c++ - C& 运算符中的 &= 是什么意思=(const C&) & = default;做?

标签 c++ c++11 operator-overloading

关于 SO 的一些问题使用特定的语法来声明默认赋值运算符。

Rule-of-Three becomes Rule-of-Five with C++11?

class C {
  C(const C&) = default;
  C(C&&) = default;
  C& operator=(const C&) & = default;
  C& operator=(C&&) & = default;
  virtual ~C() { }
};

我对用于赋值运算符的 & = 感到困惑。经过快速测试后,默认赋值运算符声明似乎可以编译并给出预期的行为,无论是否带有附加的“&”符号。

我在 cppreference 上没有看到 & = 语法。

最佳答案

& 有一个 ref qualifier .

在这种特殊情况下,它使得您要分配的 C 实例必须是非常量左值。

关于c++ - C& 运算符中的 &= 是什么意思=(const C&) & = default;做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24484365/

相关文章:

c++ - 重载模板化类二元运算符*

c++ - Clang 在 C++03 模式下支持哪些 C++11 扩展?

c++ - 使用声明和 const 重载

python - 是否可以在 Python 中重载逻辑和?

c++ - 运算符重载 : Ostream/Istream

c++ - 如何使我的函数对重载的 iostream 提取运算符具有粘性

c++ - 在 Visual Studio 中使用 'Linux development with C++' 时如何将源保留在本地?

c++ - 初始化错误

c++ - 如何连接多个唯一指针 vector

c++ - 简单的继承——奇怪的编译错误