【问题标题】:What does & = in C& operator=(const C&) & = default; do? [duplicate]& = in C & operator=(const C &) & = default; 是什么意思?到? [复制]
【发布时间】:2014-08-20 11:37:49
【问题描述】:

关于 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 上看不到 & = 语法。

【问题讨论】:

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


【解决方案1】:

& 有一个ref qualifier

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

【讨论】:

  • 那么没有& 你可以分配给类的右值吗?
猜你喜欢
  • 1970-01-01
  • 2013-03-07
  • 2019-09-12
  • 2017-07-08
  • 2020-04-07
  • 1970-01-01
  • 2011-08-27
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多