Heim >Backend-Entwicklung >C++ >Warum kann ich in C keine temporären Objekte an nicht konstante Referenzen übergeben?

Warum kann ich in C keine temporären Objekte an nicht konstante Referenzen übergeben?

Susan Sarandon
Susan SarandonOriginal
2024-12-11 15:02:11777Durchsuche

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

Warum ist in C nur eine Konstantenreferenz für temporäre Objekte zulässig?

In C ist die Zuweisung temporärer Objekte ausschließlich an Konstantenreferenzen zulässig , während nicht konstante Referenzen verboten sind. Diese Einschränkung hat zahlreiche Fragen aufgeworfen, insbesondere hinsichtlich der Möglichkeit, temporäre Objekte zu modifizieren.

Wie allgemein anerkannt ist, sind temporäre Objekte vergänglich und verschwinden, sobald die Aussage, die ihre Erstellung enthält, endet. Dies wirft berechtigte Bedenken auf: Warum ist die Änderung eingeschränkt, während das Lesen zulässig ist?

Um diese Diskrepanz zu verstehen, betrachten Sie eine hypothetische Situation mit einem Funktionsparameter:

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);

Wenn nicht konstante Referenzen vorhanden wären Wenn temporäre Parameter zulässig wären, wäre das Verhalten dieses Codes eigenartig. Obwohl ein int-Argument als Referenz übergeben wird, bleibt der Wert von i nach dem Aufruf von inc unverändert. Dies würde zu unerwarteten und unlogischen Ergebnissen führen.

Das Zulassen von Konstantenverweisen garantiert jedoch, dass das an den Funktionsparameter übergebene temporäre Objekt nicht versehentlich geändert werden kann. Dies verhindert die Möglichkeit unerwarteten Verhaltens und stellt sicher, dass die Absicht der Verwendung einer Konstantenreferenz gewahrt bleibt.

Das obige ist der detaillierte Inhalt vonWarum kann ich in C keine temporären Objekte an nicht konstante Referenzen übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn