Il codice è il seguente:La funzione C++ restituisce un valore, ma a questo può essere assegnato un nuovo valore?
#include <iostream>
using namespace std;
class A {
};
A rtByValue() {
return A();
}
void passByRef(A &aRef) {
// do nothing
}
int main() {
A aa;
rtByValue() = aa; // compile without errors
passByRef(rtByValue()); // compile with error
return 0;
}
The g ++ compilatore genera il seguente errore:
d.cpp: In function ‘int main()’:
d.cpp:19:23: error: invalid initialization of non-const reference of type ‘A&’ from an rvalue of type ‘A’
d.cpp:12:6: error: in passing argument 1 of ‘void passByRef(A&)’
Si dice che non posso passare un rvalue come argomento di un riferimento non-const, ma quello di cui sono confuso è il motivo per cui posso assegnare a questo valore, proprio come mostra il codice.
Sì, i riferimenti non const non possono essere associati ai provvisori. – chris
Strano. Posso compilare ed eseguire questo in MS VS 2010. – Kupto
@chris ma perché posso assegnarlo. Posso assegnarlo, perché non posso passarlo come riferimento? – haipeng31