¿Por qué usted necesita constructores de copia en c ++

El constructor es una función especial que C ++ invoca automáticamente cuando se crea un objeto para permitir que el objeto para inicializar sí mismo. Hay dos variaciones particulares del constructor conocido como el dupdo y constructores movimiento.

Video: 129. Programación en C++ || POO || Destructor de Objetos

Un constructor de copia es el constructor que C ++ utiliza para hacer copias de los objetos. Lleva el nombre X :: X (const X&), dónde x es el nombre de la clase. Es decir, es el constructor de la clase X, que toma como argumento una referencia a un objeto de clase x. Esto suena realmente inútil, pero sólo un minuto para explorar por qué C ++ necesita este tipo de bestias.

Piense por un momento acerca de lo que sucede cuando se llama a una función como la siguiente:

Video: 130. Programación en C++ || POO || Métodos constructores y modificadores (Getters y Setters)

void fn (fs Estudiante) {// ... mismo argumento de escenarios diferentes ...} int main (int argcs, char * pargs []) {ms Student-FN (ms) -Retorno 0-}

En la llamada a fn (), C ++ pasa una copia del objeto Sra y no el objeto en sí.

Ahora considere lo que significa crear una copia de un objeto. En primer lugar, se necesita un constructor para crear un objeto, incluso una copia de un objeto existente. C ++ podría crear un constructor de copia por defecto que copia el objeto existente en el nuevo objeto de un byte a la vez.

Eso es lo que los lenguajes anteriores, tales como C hacen. Pero lo que si la clase no quiere una copia simple del objeto? ¿Qué pasa si se requiere algo más? (No haga caso de los “por qué?” Por un rato.) La clase tiene que ser capaz de especificar exactamente cómo se debe crear la copia.

Video: Constructor por parámetros [Tutorial de Java]

Por lo tanto, C ++ utiliza un constructor de copia en el ejemplo anterior para crear una copia del objeto Sra en la pila durante la llamada de la función fn (). Este constructor de copia en particular sería Estudiante :: Estudiantes (Student&) - decir que tres veces rápidamente.

Artículos Relacionados