Ich lese ein Buch über C++ und genauer über das Überladen des Operators.C++ warum der Zuweisungsoperator eine const ref zurückgeben sollte, um zu vermeiden (a = b) = c
Das Beispiel ist die folgende:
const Array &Array::operator=(const Array &right)
{
// check self-assignment
// if not self- assignment do the copying
return *this; //enables x=y=z
}
Die Erklärung durch das Buch bereitgestellt etwa const ref anstelle von ref zurückkehr Zuordnungen zu vermeiden, wie (x = y) = z. Ich verstehe nicht, warum wir das vermeiden sollten. Ich verstehe, dass x = y zuerst in diesem Beispiel ausgewertet wird und da es eine konstante Referenz zurückgibt, kann der = z-Teil nicht ausgeführt werden. Aber warum?
Welches Buch? Das sieht für mich wie eine unnötige Vorsichtsmaßnahme aus. Ich kann mir nicht vorstellen, dass jemand '(x = y) = z' schreibt - warum sollten sie? Und ohne die Parens wird 'x = y = z 'als' x = (y = z) 'geparst, was vollkommen sinnvoll ist, also besteht dort kein Risiko. –
Aber warum was? Warum ist es ein const ref? Warum wird es in dieser Reihenfolge ausgeführt? Warum kann 'z' nicht zugewiesen werden (x = y)? – Lazarus
@antronis: Holen Sie sich ein besseres C++ Buch. – ybungalobill