Video: 127. Programación en C++ || POO || Clases y objetos en C++ 2024
El constructor es una función especial que C ++ invoca automáticamente cuando se crea un objeto para permitir que el objeto se inicialice. Hay dos variaciones particulares del constructor conocidos como copiar y mover constructores.
Un constructor de copia es el constructor que C ++ usa para hacer copias de objetos. Lleva el nombre X:: X (const X &), donde 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 la clase X . Esto suena realmente inútil, pero solo tómate un minuto para explorar por qué C ++ necesita esas bestias.
Piensa por un momento en lo que sucede cuando llamas a una función como la siguiente:
void fn (Student fs) {// … misma situación; diferente argumento …} int main (int argcs, char * pArgs []) {Estudiante ms; fn (ms); return 0;}
En la llamada a fn (), C ++ pasa una copia del objeto ms 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 predeterminado que copia el objeto existente en el nuevo objeto un byte a la vez.
Eso es lo que hacen los lenguajes antiguos como C. Pero, ¿y si la clase no quiere una copia simple del objeto? ¿Qué pasa si se requiere algo más? (Ignore el "¿por qué?" Por un momento). La clase debe ser capaz de especificar exactamente cómo se debe crear la copia.
Por lo tanto, C ++ usa un constructor de copia en el ejemplo anterior para crear una copia del objeto ms en la pila durante la llamada a la función fn (). Este constructor de copia particular sería Estudiante:: Estudiante (Estudiante &) - di eso tres veces rápidamente.