English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ 教程基本

C++ Control de flujo

C++ Función

C++ Arreglo & cadena

C++ Estructuras de datos

C++ Clase & objeto

C++ Punteros

C++ Herencia

C++ STL Tutorial

C++ Manual de referencia

C++ Constructor

En este artículo, aprenderá C ++Usted aprenderá qué es el constructor, cómo lo crea y C ++del tipo de constructor.

El constructor es un tipo especial de función miembro, que se ejecuta enObjetoSe inicializa automáticamente en el momento.

El compilador identifica la función miembro dada por su nombre y tipo de retorno como constructor.

El constructor tiene el mismo nombre que la clase y no tiene tipo de retorno. Además, el constructor siempre es público.

... .. ...
class temporary
{
private: 
    int x;
    float y;
public:
    // Constructor
    temporary(): x(5), y(5.5)
    {
        // Cuerpo del constructor
    }
    ... ..  ...
};
int main()
{
    Temporary t1;
    ... .. ...
}

El programa anterior muestra el constructor definido, sin tipo de retorno y con el nombre igual a la clase.

¿Cómo funciona el constructor?

En el código anterior, temporary() es un constructor.

Al crear el objeto de la clase, se llama automáticamente al constructor temporary y se inicializa x.5luego y se inicializa a5.5.

También puede inicializar los miembros de datos del constructor de la siguiente manera. Pero no se recomienda usar este método.

temporary()
{
   x = 5;
   y = 5.5;
}
// Este método no es la opción preferida.

enC ++usando el constructor

Supongamos que está tratando100 objetos Person y el valor predeterminado del miembro de datos age es 0. Inicializar manualmente todos los objetos será una tarea muy tediosa.

Por el contrario, puede definir un constructor que inicialice age a 0. Luego, todo lo que tiene que hacer es crear un objeto Person, el constructor inicializará automáticamente age.

Estos casos ocurren a menudo al manejar arrays de objetos.

Además, si desea ejecutar algún código inmediatamente después de crear el objeto, puede poner el código en el cuerpo del constructor.

Ejemplo1:C ++Método

Calcular y mostrar el área del rectángulo.

#include <iostream>
using namespace std;
class Area
{
    private:
       int length;
       int breadth;
    public:
       // Constructor
       Area(): length(5), breadth(2){}
       void GetLength()
       {
           cout << "Ingrese la longitud y la anchura: ";
           cin >> length >> breadth;
       }
       int AreaCalculation() { return (length * breadth);}
       void DisplayArea(int temp)
       {
           cout << "Área: " << temp;
       }
};
int main()
{
    Área A1, A2;
    int temp;
    A1.GetLength();
    temp = A1.AreaCalculation();
    A1.DisplayArea(temp);
    cout << endl << "El área predeterminada cuando no se obtienen valores del usuario es:" << endl;
    temp = A2.AreaCalculation();
    A2.DisplayArea(temp);
    return 0;
}

En este programa, se crea la clase Area para manejar las funciones relacionadas con el área. Tiene dos miembros de datos length y breadth.

Se define un inicializador de length que inicializa5ybreadth son2El constructor.

También tenemos tres funciones miembro adicionales GetLength (), AreaCalculation () y DisplayArea (), que respectivamente obtienen la longitud del usuario, calculan el área y muestran el área.

Al crear el objeto A1yA2Debido a la relación del constructor, las longitudes (length) y anchuras (breadth) de estos dos objetos se inicializan respectivamente5y2.

Luego, llame al miembro de la función GetLength (), que obtiene el objeto A1Los valores de longitud (length) y anchura (breadth). Esto cambia el objeto A1La longitud (length) y la anchura (breadth) del ancho.

Luego, llame a la función AreaCalculation () para calcular el objeto A1El área y se almacena en la variable temp, finalmente se muestra.

Para el objeto A2No se requiere que el usuario proporcione ningún dato. Por lo tanto, la longitud (length) y la anchura (breadth) se mantienen5y2.

Luego, calcule y muestre A2El área es10.

Resultados de salida

Ingrese la longitud y la anchura respectivamente: 6
7
Área: 42
El área predeterminada cuando no se obtienen valores del usuario es:
Área: 10

Carga de构造函数

El constructor también puede ser similar aSobrecarga de funciones deMétodo de sobrecarga.

La sobrecarga de constructores tiene el mismo nombre (el nombre de la clase), pero la cantidad de parámetros es diferente.

Según la cantidad y tipo de parámetros pasados, se llamará al constructor específico.

Debido a que existen varios constructores, también se deben pasar los parámetros del constructor al crear el objeto.

Ejemplo2Sobrecarga de constructores

// Demostración de cómo funciona el principio del constructor sobrecargado
#include <iostream>
using namespace std;
class Area
{
    private:
       int length;
       int breadth;
    public:
       // Constructor sin parámetros
       Area(): length(5), breadth(2{
       // Constructor con dos parámetros
       Area(int l, int b): length(l), breadth(b){}
       void GetLength()
       {
           cout << "Ingrese la longitud y anchura: ";
           cin >> length >> breadth;
       }
       int AreaCalculation() { return length * breadth;}
       void DisplayArea(int temp)
       {
           cout << "Área: " << temp << endl;
       }
};
int main()
{
    Área A1, A2(2, 1);
    int temp;
    cout << "Área por defecto cuando no se pasan parámetros. " << endl;
    temp = A1.AreaCalculation();
    A1.DisplayArea(temp);
    cout << "("2,1como parámetro cuando se pasa. " << endl;
    temp = A2.AreaCalculation();
    A2.DisplayArea(temp);
    return 0;
}

Para el objeto A1al crear el objeto sin pasar ningún parámetro.

Por lo tanto, se llamará al constructor sin parámetros, que inicializará la longitud (length) en5el ancho (breadth) se inicializa en2Por lo tanto, el objeto A1la área será10.

Para el objeto A2al crear el objeto se2y1como parámetros.

Por lo tanto, se llamará al constructor con dos parámetros, que inicializará la longitud (length) en l (en este caso de)2y se inicializa el ancho (breadth) en b (en este caso de)1Por lo tanto, el objeto A2la área será2.

Resultados de salida

Área por defecto cuando no se pasan parámetros.
Área: 10
(2,1como parámetro cuando se pasa.
Área: 2

Constructor de copia por defecto

Un objeto se puede inicializar con otro objeto del mismo tipo. Esto es lo mismo que copiar el contenido de una clase a otra.

En el programa anterior, si desea inicializar un objeto A3hacer que contenga el valor de A2Para ejecutar valores idénticos, puede hacer lo siguiente:

....
int main()
{
   Área A1, A2(2, 1);
   // Copiar A2copiar el contenido a A3
   Área A3(A2);
     O, 
   Área A3 = A2;
}

Es posible que desee crear un nuevo constructor para realizar esta tarea. Sin embargo, no es necesario un constructor adicional. Esto se debe a que el constructor de copia está integrado en todas las clases por defecto.