当 opeator= returns void 而不是 T& 时会发生什么?

What happens when opeator= returns void rather than T&?

在运算符重载中,赋值运算符通常定义如下:

T& T::operator =(const T2& b);

which returns T& 作为结果。但是我想知道当我们 return void 时会发生什么。比如std::atmoic<std::shared_ptr<T>>的赋值运算符returns void:

void operator=( std::shared_ptr<T> desired ) noexcept;

定义为 here and here。在这种情况下会发生什么?总是这样实现赋值运算符可以吗?我想这会阻止像 a=b=c; 这样的赋值,这有时很好,不是吗?

您将无法链接作业

a = b = c;

(也不介绍更复杂的情况,如(a = b).method();if((a = b));。)

OTOH,使用 void return 类型你不需要无处不在的 return *this; 样板文件。