Frage

sagen, ich habe eine Klasse:

class A
{
 public:
 A() {}
};

und eine Funktion:

void x(const A & s) {}

und ich:

x(A());

könnte mir bitte jemand die Regeln in Bezug auf Weitergabe temporäre Objekte durch Verweis erklären? Im Hinblick darauf, was der Compiler ermöglicht, in dem Sie const müssen, wenn eine implizite Kopie geschieht, usw. Von herum spielen, scheint es, wie Sie die const brauchen was Sinn macht, aber gibt es eine formale Regel in Bezug auf all das?

Danke!

War es hilfreich?

Lösung

Es gibt eine formale Regel - der C ++ Standard (Abschnitt 13.3.3.1.4, wenn Sie interessiert sind), dass ein vorübergehendes kann nur auf eine konstante Referenz gebunden werden - wenn Sie versuchen, der Compiler eine nicht konstante Referenz zu verwenden, muss Flag dies als Fehler.

Andere Tipps

Herb Sutter macht einen guten Job zu erklären es hier: http://www.gotw.ca /gotw/081.htm

x () muß entweder eine const Referenz auf ein temporäres A nehmen, oder x () einen A für-Wert annehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top