Wie kann ich die Variable ändern, auf die sich eine C ++ - Referenz bezieht?
Wenn ich diese habe:
int a = 2;
int b = 4;
int &ref = a;
Wie kann ich ref
siehe b
nach diesem code?
InformationsquelleAutor der Frage Taru | 2011-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies nicht möglich, und das ist durch design. Verweise nicht rebound.
InformationsquelleAutor der Antwort Björn Pollex
Mit C++11 ist der neue(ish) std::reference_wrapper.
Dies ist auch nützlich für die Speicherung von Referenzen in Containern.
InformationsquelleAutor der Antwort David C. Bishop
Kann man nicht zuweisen, eine Referenz, aber wenn Sie sind auf der Suche nach etwas, das würde ähnliche Fähigkeiten auf diesem können Sie einen Zeiger statt.
Können Sie abrufen oder setzen Sie den Wert innerhalb Zeiger mit:
InformationsquelleAutor der Antwort John Humphreys - w00te
Können Sie nicht zuweisen einer Referenz.
InformationsquelleAutor der Antwort Griwes
Nicht möglich ist, wie Sie es möchten. C++ einfach nicht lassen Sie danach das System neu binden, was eine Referenz verweist.
Allerdings, wenn Sie möchten, verwenden Sie Tricks, die Sie kann fast simulieren Sie es mit einem neuen Bereich (NIE tun dies in einem realen Programm):
InformationsquelleAutor der Antwort Mark B
Formal, das ist unmöglich, da es verboten ist by design. Willkürlich sprechen, das ist möglich.
Referenzen gespeichert ist, als ein Zeiger, so kann man immer ändern, wo es Punkte zu, solange Sie wissen, wie man seine Adresse. Ebenso können Sie auch ändern Sie den Wert von const-Variablen, die const-member-Variablen oder auch private member-Variablen, wenn Sie nicht haben Zugang zu.
Beispielsweise den folgenden code geändert hat, Eine Klasse ist const-private-member-Referenz:
Programm-Ausgabe:
Wie Sie sehen können, dass ein.i1 zunächst Punkte zu ich, nach der änderung ist es, Punkte zu j.
Allerdings so gilt als gefährlich und damit unrecommended, weil es Niederlagen den ursprünglichen Zweck der Daten-Kapselung und OOP. Es ist mehr wie Speicher-Adresse hacken.
InformationsquelleAutor der Antwort xuancong84
Können Sie eine Referenz-wrapper sehr einfach mit der Platzierung neu:
InformationsquelleAutor der Antwort Taster
Ist dies möglich. Denn unter der Haube Referenz ist ein Zeiger.
Der folgende code druckt "Hallo Welt"
InformationsquelleAutor der Antwort Zhaolin Feng
Obwohl seine eine schlechte Idee, weil es Niederlagen den Zweck der Verwendung von Referenzen ist es möglich, ändern Sie den Verweis direkt
InformationsquelleAutor der Antwort visu