C ++ почему оператор присваивания должен возвращать const ref, чтобы избежать (a = b) = c

Я читаю книгу о C ++, а точнее о перегрузке операторов.

Пример следующий:

const Array &Array::operator=(const Array &right)
{
// check self-assignment
// if not self- assignment do the copying
return *this; //enables x=y=z
}

В книге приводится объяснение возврата const ref вместо ref: Избегайте присвоений типа (x = y) = z. Я не понимаю, почему мы должны этого избегать. Я понимаю, что в этом примере сначала оценивается x = y, и поскольку он возвращает ссылку на константу, часть = z не может быть выполнена. Но почему?

26
задан antonis_wrx 16 January 2011 в 16:56
поделиться