2009-04-02 11 views
2

sagen, ich habe eine Klasse:Regeln mit temporären Objekten und args durch Verweis

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

und eine Funktion:

void x(const A & s) {} 

und ich mache:

x(A()); 

könnte jemand bitte erklären, zu mir die Regeln bezüglich vorübergehender Gegenstände durch Referenz? In Bezug darauf, was der Compiler erlaubt, wo du const brauchst, ob eine implizite Kopie passiert, etc. Aus dem Spiel heraus scheint es, als ob du die const brauchst, die Sinn macht, aber gibt es eine formale Regel in Bezug auf all das?

Danke!

Antwort

9

Es gibt eine formale Regel - der C++ - Standard (Abschnitt 13.3.3.1.4, wenn Sie interessiert sind) besagt, dass ein temporäres nur an eine const-Referenz gebunden werden kann - wenn Sie versuchen, eine nichtkonstante Referenz des Compilers zu verwenden muss dies als Fehler kennzeichnen.

+0

Danke - Ich habe 13.3 ... das letzte Mal verpasst, als ich nachgesehen habe. –

1

x() muss entweder eine konstante Referenz auf einen temporären A nehmen, oder x() eine Ein Nebenwert nehmen.