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; }
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