Capítulo 12
¿Cuándo ocurre una
asignación implícita?
Cuando
se declara un objeto y se le inicializan con los valores almacenados en otro
objeto de la misma clase por medio de un método constructor.
Si
se tiene la siguiente declaración de objetos de la clase Ejemplo:
Ejemplo
Objeto1(Objeto2); o Ejemplo Objeto1=Objeto2;
Se
puede observar que ocurre una asignación en forma implícita del Objeto2 al
Objeto1. Cuando
se invoca una función libre o un método y se le envía un objeto como argumento
(por valor) se genera una copia local del argumento que se recibe, se dice que
el parámetro formal de la función se le asigna en forma implícita, el valor del
argumento de la llamada. Cuando
una función genera como salida un objeto, se genera otro pero temporal en el
que se regresa el resultado de la función o método.
Constructor Copy
Constructor
Un
caso similar al de la asignación explicita
ocurre con los constructores de objetos que poseen atributos dinámicos.
Es necesario definir un constructor especial (Copy Constructor) cuaya labor
será inicializar el nuevo objeto, asignándole el contenido del objeto (de la
misma clase) que recibe como parámetro.
¿Cómo funcione el
Copy Constructor?
El
concepto, y la forma en que trabaja, es básicamente igual a la del operador de
asignación. La diferencia esta en que, al ser un método constructor, se aplica
directamente sobre el objeto en creación, sin generar ninguna salida.
¿Qué implicaciones
a nivel de memoria existen al utilizar una función que regresa una referencia?
Cuando
se usa una referencia en el tipo de resultado de la función, el compilador no
genera una réplica del objeto por regresar como resultado de la función.
Apuntador this
Cada
vez que un método se ejecuta, en forma implícita existe una referencia
(apuntador) al objeto sobre el que se aplica dicho método. La referencia se
llama this y es un apuntador que almacena la dirección del objeto sobre el que
se aplica el método. Este apuntador lo define internamente el compilador y,
generalmente, se maneja en forma implícita.
class Ejemplo
{ private:
Int atributo;
public:
Void Escribe()
{cout <<
atributo; }
}:
¿Qué es una referencia?
Una
referencia es un alias de una variable u objeto. Ya se han utilizado
referencias al definir parámetros por referencia en una función. Estos parámetros,
en forma conceptual, se vuelven un alias de las variables enviadas como
argumento durante la ejecución de la función correspondiente.
El
concepto de referencia puede ser utilizado para indicar que una función regresara
como resultado una referencia a una variable u objeto. La sintaxis para indicar
que la función regresara una referencia, es colocar al final del tipo de dato
de la función un &.
No hay comentarios:
Publicar un comentario