Y, de forma similar, ¿el constructor de copia predeterminado llama al constructor de copia en todos los miembros? Por ejemplo, si una clase tiene un miembro no-POD de este modo:¿El operador de asignación predeterminado llama a operator = en todos los miembros?
class A
{
std::string str;
};
... será el constructor de copia generado por el compilador por defecto y el trabajo operador de asignación correctamente? ¿Llamarán al constructor de copia de la cadena y al operator=
o simplemente harán una copia bit a bit de la variable miembro str
?
En otras palabras, ¿tener un miembro std::string
significa que esta clase necesita un constructor de copia y un operador de asignación implementados por el usuario?
"Sí, el generado por el compilador funcionará correctamente". - incluso para las clases con miembros const? –
@spin_eight, entonces una copia o asignación ni siquiera compilaría. –
@LuchianGrigore: en realidad, se compilará una copia. La asignación obviamente no. –