当 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;
样板文件。
在运算符重载中,赋值运算符通常定义如下:
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;
样板文件。