Constructores C++
Constructores C++
En este tutorial, aprenderemos sobre el constructor de 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 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 <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
Wall() {
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main() {
Wall wall1;
return 0;
}
Salida
Creating a Wall Length = 5.5
Aquí, cuando el wall1 se crea el objeto, el Wall()
se llama constructor. Esto establece la longitud variable del objeto a 5.5
.
Constructor parametrizado de C++
En C++, un constructor con parámetros se conoce como constructor parametrizado. Este es el método preferido para inicializar los datos de los miembros.
Ejemplo 2:Constructor parametrizado de C++
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
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();
return 0;
}
Salida
Area of Wall 1: 90.3 Area of Wall 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 miembro longitud y altura .
Cuando creamos un objeto del Wall
class, 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 de la pared con el calculateArea()
función.
Constructor de copia de C++
El constructor de copias en C++ se usa para copiar datos de un objeto a otro.
Ejemplo 3:Constructor de copia de C++
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
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);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Salida
Area of Wall 1: 90.3 Area of Wall 2: 90.3
En este programa, hemos usado un constructor de copia para copiar el contenido de un objeto del Wall
clase a otra. El código del constructor de copias es:
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
Note que el parámetro de este constructor tiene la dirección de un objeto del Wall
clase.
Luego asignamos los valores de las variables del obj object a las variables correspondientes del objeto que llama al constructor de copia. Así es como se copian los contenidos del objeto.
En main()
, luego creamos dos objetos wall1 y pared2 y luego copie el contenido de wall1 a pared2 :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
Aquí, el muro2 objeto llama a su constructor de copias pasando la dirección de wall1 objeto como su argumento, es decir, &obj = &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.
Lenguaje C