Regeln mit temporären Objekten und args durch Bezugnahme
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!
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.