4 Stimmen

C++ : Konstante Referenz auf lokales Objekt

const std::string s1 = "abc";
const std::string & s2 = "abc";

Ist die Definition von s2 legal? Wenn ja, was ist der Unterschied zwischen s1 y s2 ?

Merci.

10voto

Erik Punkte 85308

Ja, s2 ist legal. s2 ist an eine temporäre std::string gebunden und verlängert die Lebensdauer der temporären Variablen. s1 ist keine temporäre Variable, sondern eine benannte Variable.

Siehe 12.2/5:

Der zweite Kontext ist, wenn ein an ein Provisorium gebunden ist. Das Provisorium an das die Referenz gebunden ist, oder das Temporär, das das vollständige Objekt ist an ein Unterobjekt, an das das Temporär gebunden ist, bleibt während der Lebensdauer der der Referenz, außer wie unten angegeben unten.

3voto

Alok Save Punkte 196241

Beides ist legal.
S1 ist eine Variable vom Typ std::String mit einem const Qualifier.
S2 ist const Verweis auf ein temporäres Element vom Typ std::string.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X