domingo, 11 de diciembre de 2011

Asignacion Implicita


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