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 len
y 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 Room
clase, 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 Wall
clase 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 Wall
clase.
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.