Introducción sobre Constructor en C

Un Constructor en C se usa en la gestión de memoria de la programación en C ++. Permite tipos de datos integrados como int, float y tipos de datos definidos por el usuario como class. El constructor en la programación orientada a objetos inicializa la variable de un tipo de datos definido por el usuario. Constructor ayuda en la creación de un objeto. El nombre del constructor es el mismo que el del objeto pero no tiene ningún tipo de retorno. Un constructor se ejecuta automáticamente cuando se crea un objeto o miembro especial. Asigna la memoria para el nuevo objeto creado y se puede sobrecargar.

Código

// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)

Usos del constructor

  • Es un método especial que tiene el mismo nombre que el nombre de la clase e inicializa el objeto cada vez que se crea. Por lo tanto, es simple y fácil de ejecutar.
  • Se utiliza principalmente para la gestión de la memoria. Se usan para inicializar y eliminar el bloqueo de memoria cuando ya no es necesario al tener las opciones Nuevo y Eliminar según lo especificado por el programador
  • El compilador crea un constructor predeterminado cada vez que se crea el objeto. Cuando no declaraste el constructor, el compilador crearía uno. Es útil porque el objeto y la función en el programa saben que el objeto existe
  • Se crea un constructor para un objeto cuando una instancia es un objeto que se declara. Una clase puede tener múltiples constructores para diferentes situaciones. La sobrecarga de constructores aumenta la versatilidad de la clase al tener muchos constructores en una clase individual.

Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12

Por lo tanto, el constructor está sobrecargado con diferentes valores.

Tipos de constructor en C

Los tipos principales del constructor se explican a continuación,

1. Constructor predeterminado

Un constructor predeterminado no tiene parámetro o el parámetro actual tiene valores predeterminados. Si no hay un constructor definido por el usuario en la clase, el compilador crea uno nuevo si es necesario y se llama como constructor predeterminado. Este es un miembro público en línea de la clase. Este constructor tendrá un cuerpo completo y no tendrá inicializador. El constructor predeterminado no proporciona nada específico, simplemente asigna memoria al objeto. Un constructor de Clase X es superficial si todas las siguientes afirmaciones son verdaderas. Se define implícitamente. Si X no tiene clases y funciones base virtuales. Todas las clases base y no miembros estáticos de X tienen constructores triviales.

2. Constructores parametrizados

El constructor que puede aceptar los argumentos se llama Constructores parametrizados. Puede especificar el argumento cuando sea necesario.

Código

class X (
int i;
public:
void abc(void);
void xyz(void);
// member function definitions
)
X 0b 1;
// default constructor for creating 0b1. hence user can use it,
// implicitly define default constructor is public
// member of the class
0b1. abc();
0b1. xyz();

3. Copiar constructor

Se usa para inicializar y declarar un objeto de otro objeto

integer 10(12);

definiría el objeto 10 y al mismo tiempo lo inicializaría al valor de 12. Otra forma de esta declaración es

integer 10 = 12;

El proceso se llama inicialización de copia. Se utiliza un constructor de copia cada vez que se crea el objeto temporal. La aplicación del constructor de copia es la siguiente; Devolución del objeto como valor de función Inicialización del objeto por otro objeto de la misma clase

Sintaxis

class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);

Código

class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)

4. Sobrecarga del constructor

Cuando se utilizan múltiples constructores en la misma clase, se denomina sobrecarga de constructores. Nos da múltiples formas de inicializar objetos en una clase. Aumenta la flexibilidad al tener múltiples constructores en una sola clase.

Código

#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)

5. Constructor bidimensional

Es como una matriz en estructura y contiene filas y columnas. Contiene una matriz de cadenas donde una fila representa una cadena y la columna representa un valor de cadena.

Código

// overloading class constructors
#include
using namespace std;
class CRectangle
(
int width, height;
public:
CRectangle ();
CRectangle (int, int);
int area (void)
(
return (width*height);
)
);
CRectangle::CRectangle ()
(
width = 7;
height = 5;
)
CRectangle::CRectangle (int a, int b)
(
width = a;
height = b;
)
int main ()
(
CRectangle rect (7, 5);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
)

Sintaxis

char arrayname(x)(y);

donde 'x' es el número de filas 'y' es el número de columnas.

El número de filas debe ser el mismo que el número de cadenas en esa matriz. El número de la columna debe ser mayor o igual que la longitud de la cadena o puede ser más uno

Ejemplo

Si hay 8 cadenas en la matriz y la longitud de la cadena más larga es 10, la matriz se define de la siguiente manera

Char days(8)(11);

6. Constructor privado

Se utiliza para crear un objeto de clase por una sola vez. Se define que la clase no tiene múltiples instancias de la clase. Es lo mismo que otros constructores pero definido como privado. Solo puede acceder al objeto de esa clase definida.

Código

classroom()
(
private:

Solo esa parte del programa y solo se puede acceder y definir dentro de la sección privada

Conclusión- Constructor en C

Un constructor puede tomar nulos o más parámetros. Una clase puede definir uno o muchos constructores. Depende de nosotros decidir qué constructor ejecutar durante la creación del objeto pasando una lista de argumentos apropiada al constructor estableciendo el valor predeterminado para el parámetro del constructor. Los punteros no se pueden usar en constructores porque no se pueden considerar sus direcciones. Los constructores no pueden declararse como estáticos, constantes o volátiles.

Artículos recomendados

Esta es una guía de Constructor en C. Aquí discutimos el uso de constructor, tipos de constructor con ejemplos, código y salidas. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. Copiar constructor en Java
  2. Arreglos en programación en C
  3. Constructor en Python
  4. Constructor en JavaScript
  5. C Multiplicación de la matriz de programación