C++ 什么是&;=在C&;运算符=(常量C&;)&;=违约做

C++ 什么是&;=在C&;运算符=(常量C&;)&;=违约做,c++,c++11,operator-overloading,C++,C++11,Operator Overloading,因此,有几个问题需要使用特定的语法来声明默认赋值运算符 我对赋值运算符使用的&=感到困惑。在快速测试之后,默认赋值运算符声明似乎可以编译,并给出预期的行为,无论是否使用额外的符号 我在cppreference上看不到&=语法。the&有一个 在这种特殊情况下,它使您想要分配给的C实例必须是一个非常量左值。它不是&=。&构成签名的一部分。有关赋值运算符的用法,请参见以下答案:因此,如果没有&,您可以赋值给类的右值吗? class C { C(const C&) = default;

因此,有几个问题需要使用特定的语法来声明默认赋值运算符

我对赋值运算符使用的&=感到困惑。在快速测试之后,默认赋值运算符声明似乎可以编译,并给出预期的行为,无论是否使用额外的符号


我在cppreference上看不到&=语法。

the
&
有一个


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

它不是
&=
&
构成签名的一部分。有关赋值运算符的用法,请参见以下答案:因此,如果没有
&
,您可以赋值给类的右值吗?
class C {
  C(const C&) = default;
  C(C&&) = default;
  C& operator=(const C&) & = default;
  C& operator=(C&&) & = default;
  virtual ~C() { }
};