Давайте рассмотрим пример:
Foo& Foo::operator+=(Foo val)
{
// logic...
return *this;
}
Foo operator+(Foo v1, Foo v2)
{
return v1+=v2;
}
Если выражение v1+=v2
имеет тип Foo&
, почему оно может использоваться как возвращаемое значение функции, возвращающей Foo
? Где исполнен актерский состав? Имеет ли значение тот факт, что operator+=
реализован как член Foo
, какая разница?