[C con Clase] Constructor copia

Salvador Pozo salvador en conclase.net
Jue Jun 14 13:53:27 CEST 2007


El pasado 2007-06-14 10:01:32, Antonia Pérez Arias escribió:
 
APA> Al leer el capítulo 29: Constructores me ha surgido una duda.
APA> La declaración y la definición del constructor copia son las siguientes:
APA> pareja(const pareja &p);
APA> pareja::pareja(const pareja &p) : a(p.a), b(p.b) {}
APA> Pero si p es un puntero a la clase pareja, por qué se accede a los miembros de p mediante p.a y p.b y no mediante p->a y p->b?

Hola:

Lo que pasa es que p no es un puntero, sino una referencia. Fíjate que la declaración es "const pareja &p", y no "const pareja *p".

Si fuese un puntero, el operador & aparecería en la llamada al constructor, no en la declaración.

Las referencias se explican en el capítulo 15:
http://c.conclase.net/curso/index.php?cap=015#FUN2_Refer

Básicamente, una referencia es un "alias", un nombre alternativo para el mismo objeto.

Cuando se usa una referencia en un parámetro de una función (o constructor), podemos acceder al objeto referenciado con el nombre usado en la declaración del parámetro.

Esto nos proporciona una forma sencilla de acceder a grandes objetos (que ocupan mucha memoria), sin necesidad de pasarlos por copia.

Además, usamos el modificador "const" para indicar que el constructor (en este caso), no modificará ninguno de los datos miembro del objeto referenciado.

Se podría haber usado un puntero en lugar de una referencia, pero es costumbre usar referencias.

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase