Sie brauchen nicht konst:
@ numerical25: Einfach nur neugierig, warum ein param ein const in Betrieb sein muss
Überlastung
Es ist nicht erforderlich, aber es ist ein gute Designentscheidung.
Siehe C++ Standard Abschnitt 12,8-9:
Ein benutzer erklärt Kopie Zuordnung Operator X :: Operator = ist eine nicht-statische Nicht-Template-Elementfunktion der Klasse X mit genau einem Parameter des Typs X, X &, const X &, volatil X & oder const flüchtig X &
Ich denke, es ist eine gute Idee, aber:
einen const-Parameter verwenden, funktioniert aber scheint wie eine logische Design-Entscheidung für mich aber, weil Sie sicherstellen wollen, dass der andere Wert wird nicht geändert.
Es erzählt anderen Menschen, die Ihre Klasse verwenden, die Sie nicht den other
Wert sich ändern, wenn Sie etwas sagen wie: myObject = other;
und es erzwingt dies, so können Sie nicht versehentlich other
ändern.
Auch wenn Sie nicht konstante Referenzen auf das Objekt als Parameter zulassen, begrenzen Sie die Anzahl der Objekte, die Ihre Funktion verwenden können. Wenn es const ist, kann es für Parameter verwendet werden, die const und non const sind. Wenn Ihr Parameter nicht const ist, kann er nur von Parametern verwendet werden, die nicht const sind.
const gilt nur für die aktuelle Referenz, nicht das Objekt:
@ numerical25: nicht ist, wenn etwas ein const wird, ist es unveränderlich für den Rest des Lebens-Anwendungen? ? Wie unterscheidet sich das beim Überladen der Operation ???
Eine const Referenz ist einfach, dass eine Referenz, die const ist. Es ändert nicht die Konstante des tatsächlichen Objekts, das Sie übergeben.
Ein Beispiel für nicht-const Operator Überlastung:
Hier ist ein Beispiel der Bediener eine Überlastung in dem die Parameter nicht const ist.
ICH NICHT DIESE ZWAR ZU TUN:
class B
{
public:
const B& operator=(B& other)
{
other.x = 3;
x = other.x;
return *this;
}
int x;
};
void main(int argc, char** argv[])
{
B a;
a.x = 33;
B b;
b.x = 44;
a = b;//both a and b will be changed
return 0;
}
O, Sie sagen, dass g = (a + b * c) das Ergebnis auf der rechten Seite gilt als eine Konstante ?? Wenn Sie sagen, dass eine Konstante nur eine Konstante innerhalb der Funktion ist. Willst du sagen, dass diese Funktion ausgeführt wird? Diese Werte können wieder geändert werden ?? – numerical25
Sie wissen was. Es macht jetzt Sinn. Wenn ich einen konstanten Wert in eine Variable umwandle. das macht die Variable nicht zu einem const, es bedeutet nur, dass es jetzt den Wert von const hält, der änderbar sein kann – numerical25
@numerical, bedenke, dass deine Idee nur funktioniert wie das, was du erwähnt hast, wenn es pass-by-reference ist. – YeenFei