Was bedeutet & - operator bedeutet überlastung
Lese ich ein C++ Buch.
Das Programm versucht, einen Vektor von Objekten.
Hier ist der Teil den ich nicht verstehe
class X {
public:
X();
X(int m) {
temp = x;
}
int temp;
X &operator =(int z) {
temp = z;
return *this;
}
private :
// Some functions here
}
Was bedeutet die obige Zeile bedeutet?
Ist dies eine Art der überlastung?
Dann, wie?
- Bitte überprüfen Sie Ihren code. Ich bin mir sicher, dass das Programm in diesem Buch nicht so Aussehen, weil es nicht immer kompilieren.
- Ich befestigte den code bis gerade genug, um schmackhaft
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie haben einen Tippfehler und das die Zeile eigentlich lautet:
Den
&
bedeutet, dass der Rückgabetyp ist ein Verweis; Sie sollten dies Lesen als Funktionoperator =
gibt eine Art vonX &
.x = y
für Ihre Klasse geben.Die Bedeutung vielleicht klarer, wenn du den Abstand etwas:
Dass ein überladen des zuweisungsoperators,
operator=
nimmt, die eineint
argument, und liefert eine Referenz aufclass X
.Können Sie es verwenden zum zuweisen einer integer-Wert in ein Objekt:
Den Rückgabewert können Sie kettenbelegung:
operator=
zurückgegebenen Wert.const
Referenz.Wohl, Ihr code sollte wie folgt Aussehen:
Und als Sie sich mit
operator=
, nicht&operator
Ihre
operator =
gibt Referenz auf das Objekt angewendet.Bedeutet dies: C* und C++ erlauben, Sie an die Kette Zuordnungen wie diese
das Ergebnis davon ist, dass
x
haben den Wert 2:x
ist, den ersten Satz zu 4, dann 3, dann auf 2 (nicht sehr nützlich, wie es scheint, aber Variationen dieses machen große Kurzschrift-Ausdrücke). Für diese Arbeit, die folgenden Anforderungen zu passieren, darunter:*in C, es tut natürlich nicht mit Referenzen arbeiten, aber das Ergebnis ist das gleiche.
Es ist
X& operator= (int z)
ich denke, dass ist zu sagen, dass eine überlastung der = - operator nimmt eine int und eine Referenz auf X.Es ist die definition der Zuweisungsoperator: Es könnte besser Aussehen, formatiert wie in dieser (out-of-line-definition):
Ermöglicht es Ihnen zu schreiben, so etwas wie dieses:
Den Wert jeder Zuordnung Teilausdruck ist eine Referenz an den Zessionar.
Können, muss der Anwender sein erklärt innerhalb der definition der Klasse natürlich: