Asignación predeterminada de miembros

Solo disponible en BuenasTareas
  • Páginas : 3 (640 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de junio de 2010
Leer documento completo
Vista previa del texto
Asignación predeterminada de miembros
El operador de asignación (=) puede utilizarse para asignar un objeto a otro objeto del mismo tipo. De manera predeterminada la asignación se lleva a cabomediante la asignación de miembros, cada miembro del objeto de la derecha es asignado al miembro correspondiente del objeto de la izquierda.
La asignación de miembros puede ocasionar serios problemascuando se utiliza una clase cuyos datos miembros contienen apuntadores hacia localizaciones asignadas dinámicamente. Para ello se necesita de un constructor de copia.
Los objetos pueden pasarse comoargumentos de funciones y pueden ser devueltos de funciones. Dicho paso se realiza por valor, o sea, se pasa o se devuelve una copia del objeto. También aquí pueden obtenerse resultados imprevistos alproporcionarse el constructor del objeto copiado cuando los datos miembros contienen apuntadores hacia localizaciones asignadas dinámicamente.
Necesidad de escribir un constructor de copia
Ha llegadoya el momento de explicar cómo surge la necesidad de escribir un constructor de copia distinto del que proporciona el compilador. Considérese una clase Alumno con dos variables miembro: unpuntero a char llamado nombre y un long llamado nmat que representa el número de matrícula..
class Alumno {
char* nombre;
long nmat;
...
};

En realidad, esta clase no incluye elnombre del alumno, sino sólo un puntero a carácter que permitirá almacenar la dirección de memoria donde está realmente almacenado el nombre. Esta memoria se reservará dinámicamente cuando elobjeto vaya a ser inicializado. Lo importante es darse cuenta de que el nombre no es realmente una variable miembro de la clase: la variable miembro es un puntero a la zona de memoria donde estáalmacenado. Esta situación se puede ver gráficamente en la figura 1, en la que se muestra un objeto a de la clase Alumno

Figura 1: Objeto con asignación dinámica de memoria
Supóngase ahora que...
tracking img