Domanda

dire che ho una classe:

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

ed una funzione:

void x(const A & s) {}

e lo faccio:

x(A());

qualcuno potrebbe spiegare a me le norme relative passando oggetti temporanei per riferimento? In termini di ciò che il compilatore permette, in cui è necessario const, se una copia implicita accade, ecc Da suonare in giro, sembra che tu abbia bisogno il const che ha un senso, ma c'è una regola formale per quanto riguarda tutto questo?

Grazie!

È stato utile?

Soluzione

C'è una regola formale - l'++ standard C (sezione 13.3.3.1.4 se siete interessati) stabilisce che un temporaneo può essere legato solo ad un riferimento const - se si tenta di utilizzare un riferimento non-const il compilatore deve segnalare questo come un errore.

Altri suggerimenti

Herb Sutter fa un ottimo lavoro che spiega qui: http://www.gotw.ca /gotw/081.htm

x () deve prendere un riferimento const ad un temporaneo A, o x () deve assumere un valore da-A.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top