¿Cómo definir el constructor fuera de la clase en C++?

Un constructor es un tipo especial de función miembro cuya tarea es inicializar los objetos de su clase. No tiene tipo de devolución, por lo que no puede usar la palabra clave de devolución y se invoca implícitamente cuando se crea el objeto.

  • El constructor también se utiliza para resolver el problema de la inicialización. 
  • Se llama después de que se crea el objeto.
  • Mismo nombre que el de la clase.

 Constructor definido fuera de la clase

El constructor se puede definir fuera de la clase, pero debe declararse dentro de la clase. Aquí, utilizará el operador de resolución de alcance.

La sintaxis para la definición del constructor fuera de la clase:

clase nombre_clase {
    público:
        nombre_clase();
};

 // Definición del constructor fuera de la clase
class_name::class_name() 
{
}

Ejemplo:

C++

// C++ program to define
// constructor outside the
// class
#include <iostream>
using namespace std;
 
class GeeksForGeeks {
public:
    int x, y;
 
    // Constructor declaration
    GeeksForGeeks(int, int);
 
    // Function to print values
    void show_x_y() {
      cout << x << " " << y << endl;
    }
};
 
// Constructor definition
GeeksForGeeks::GeeksForGeeks(int a, int b)
{
    x = a;
    y = b;
    cout << "Constructor called" << endl;
}
 
// Driver code
int main()
{
    GeeksForGeeks obj(2, 3);
    obj.show_x_y();
    return 0;
}
Producción

Constructor called
2 3

Complejidad temporal: O(1)
Espacio auxiliar: O(1)

Razones para definir el constructor fuera de la clase

Las siguientes son algunas de las razones por las que es preferible definir constructores fuera de la clase:

  • Sin dependencia del tiempo de compilación: se puede colocar la definición de la clase en el archivo de encabezado y la definición del constructor en un archivo de implementación que se compilará.
  • Legibilidad y código más limpio: la razón principal es definir el constructor fuera de la clase para mejorar la legibilidad. Dado que uno puede separar las declaraciones en los archivos de encabezado y las implementaciones en los archivos fuente.

Ejemplo: GeeksForGeeks.h

C++

// Header file
// Save this code with .h extension
// For example- GeeksForGeeks.h
#include <bits/stdc++.h>
using namespace std;
class ClassG {
public:
    int a, b;
   
    // Constructor declaration
    ClassG();
 
    // Function to print values
    void show()
    {
      cout << a << " " << b;
    }
};

Complejidad temporal: O(1)
Espacio auxiliar: O(1)

Archivo: geek.cpp

C++

// Adding GeeksForGeeks.h File
#include"GeeksForGeeks.h"
 
#include<bits/stdc++.h>
using namespace std;
 
// Constructor definition
ClassG::ClassG()
{
    a = 45; 
    b = 23;
}
 
// Driver code
int main()
{
   
    // This will call the
    // constructor
    ClassG obj;
   
    // Function call
    obj.show();
}

Producción:

45 23

Complejidad temporal: O(1)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por sameerhakeentc2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *