C ++ por que o operador de atribuição deve retornar uma const ref para evitar (a = b) = c
Estou lendo um livro sobre C ++ e mais precisamente sobre a sobrecarga do operador.
O exemplo é o seguinte:
const Array &Array::operator=(const Array &right)
{
// check self-assignment
// if not self- assignment do the copying
return *this; //enables x=y=z
}
A explicação fornecida pelo livro sobre o retorno de const ref em vez de ref é evitar atribuições como (x = y) = z. Não entendo por que devemos evitar isso. Entendo que x = y é avaliado primeiro neste exemplo e, como retorna uma referência const, a parte = z não pode ser executada. Mas por que?