Pregunta

decir que tengo una clase:

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

y una función:

void x(const A & s) {}

y lo hago:

x(A());

Podría alguien explicarme las reglas con respecto a los objetos que pasan por referencia temporales? En términos de lo que permite el compilador, donde se necesita const, si una copia implícita sucede, etc. De jugar, parece que lo que necesita la const lo cual tiene sentido, pero hay una regla formal en relación con todo esto?

Gracias!

¿Fue útil?

Solución

Hay una regla formal - el estándar de C ++ (sección 13.3.3.1.4 si está interesado) afirma que un temporal solo se pueden unir a una referencia constante - si se intenta utilizar una referencia no const el compilador debe flag esto como un error.

Otros consejos

Herb Sutter hace un buen trabajo explicando aquí: http://www.gotw.ca /gotw/081.htm

x () o bien debe tener una referencia const a un A temporal, o x () deben tener una A por valor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top