Constructores C ++: tipos y constructores de copia

En este tutorial, aprenderemos sobre el constructor C ++ y su tipo con los ejemplos de ayuda.

Un constructor es un tipo especial de función miembro que se llama automáticamente cuando se crea un objeto.

En C ++, un constructor tiene el mismo nombre que el de la clase y no tiene un tipo de retorno. Por ejemplo,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Aquí, la función Wall()es un constructor de la clase Wall. Observe que el constructor

  • tiene el mismo nombre que la clase,
  • no tiene un tipo de retorno y
  • es public

Constructor predeterminado de C ++

Un constructor sin parámetros se conoce como constructor predeterminado . En el ejemplo anterior, Wall()es un constructor predeterminado.

Ejemplo 1: Constructor predeterminado de C ++

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Salida:

 Crear una longitud de pared = 5.5

Aquí, cuando se crea el objeto wall1, Wall()se llama al constructor. Esto establece la variable de longitud del objeto en 5.5.

Nota: Si no hemos definido un constructor en nuestra clase, entonces el compilador de C ++ creará automáticamente un constructor predeterminado con un código vacío y sin parámetros.

Constructor parametrizado C ++

En C ++, un constructor con parámetros se conoce como constructor parametrizado. Este es el método preferido para inicializar datos de miembros.

Ejemplo 2: constructor parametrizado de C ++

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Salida:

 Área del muro 1: 90,3 Área del muro 2: 53,55

Aquí, hemos creado un constructor parametrizado Wall()que tiene 2 parámetros: double leny double hgt. Los valores contenidos en estos parámetros se utilizan para inicializar las variables de miembro longitud y altura.

Cuando creamos un objeto de la Roomclase, pasamos los valores de las variables miembro como argumentos. El código para esto es:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Con las variables miembro así inicializadas, ahora podemos calcular el área del muro con la calculateArea()función.

Constructor de copias de C ++

El constructor de copia en C ++ se utiliza para copiar datos de un objeto a otro.

Ejemplo 3: constructor de copias de C ++

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Salida

 Área de la habitación 1: 90,3 Área de la habitación 2: 90,3

En este programa, hemos utilizado un constructor de copia para copiar el contenido de un objeto de la Wallclase a otro. El código del constructor de copias es:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Observe que el parámetro de este constructor tiene la dirección de un objeto de la Wallclase.

Luego asignamos los valores de las variables del primer objeto a las variables correspondientes del segundo objeto. Así es como se copia el contenido del objeto.

En main(), creamos dos objetos wall1 y wall2 y luego copiamos el contenido del primer objeto al segundo con el código

 Wall wall2 = wall1;

Nota : Un constructor se usa principalmente para inicializar objetos. También se utilizan para ejecutar un código predeterminado cuando se crea un objeto.

Articulos interesantes...