Introductie over Constructor in C
Een Constructor in C wordt gebruikt bij het geheugenbeheer van C ++ -programmering. Het maakt ingebouwde gegevenstypen zoals int, float en door de gebruiker gedefinieerde gegevenstypen zoals klasse mogelijk. Constructor in objectgeoriënteerd programmeren initialiseert de variabele van een door de gebruiker gedefinieerd gegevenstype. Constructor helpt bij het maken van een object. De naam van de constructor is hetzelfde als de naam van het object, maar heeft geen retourtype. Een constructor wordt automatisch uitgevoerd wanneer een object of speciaal lid wordt gemaakt. Het wijst het geheugen toe voor het nieuwe object en het kan worden overbelast.
Code
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Gebruik van de constructor
- Het is een speciale methode die dezelfde naam heeft als de klassenaam en het object initialiseert wanneer het wordt gemaakt. Het is dus eenvoudig en gemakkelijk uit te voeren.
- Het wordt voornamelijk gebruikt voor geheugenbeheer. Ze worden gebruikt om het geheugenblok te initialiseren en te verwijderen wanneer dit niet langer nodig is door de opties Nieuw en Verwijderen zoals opgegeven door de programmeur
- De compiler maakt een standaardconstructor wanneer het object wordt gemaakt. Als je de constructor niet hebt aangegeven, maakt de compiler er een. Het is handig omdat het object en de functie in het programma weten dat het object bestaat
- Een constructor voor een object wordt gemaakt wanneer een instantie een object is dat is gedeclareerd. Een klasse kan meerdere constructors hebben voor verschillende situaties. Overbelasting van constructeurs verhoogt de veelzijdigheid van de klasse door veel constructors in een afzonderlijke klasse te hebben.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Daarom is de constructor overladen met verschillende waarden.
Soorten constructor in C
De belangrijkste typen van de constructor worden als volgt uitgelegd,
1. Standaardconstructor
Een standaardconstructor heeft geen parameter of de huidige parameter heeft standaardwaarden. Als er geen door de gebruiker gedefinieerde constructor aanwezig is in de klasse, maakt de compiler indien nodig een nieuwe en die wordt als standaardconstructor aangeroepen. Dit is een inline publiek lid van de klas. Deze constructor heeft een volledige body en geen initialisatie. De standaardconstructor biedt niets specifieks, hij wijst eenvoudigweg geheugen toe aan het object. Een constructor van Klasse X is oppervlakkig als alle volgende beweringen waar zijn. Het wordt impliciet gedefinieerd. Als X geen virtuele basisklassen en functies heeft. Alle basisklassen en niet statische leden van X hebben triviale constructors.
2. Geparametriseerde constructeurs
De constructor die de argumenten kan accepteren, wordt Parameterized constructors genoemd. Het kan het argument specificeren wanneer het nodig is.
Code
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. Kopieer Constructor
Het wordt gebruikt om een object van een ander object te initialiseren en te declareren
integer 10(12);
zou object 10 definiëren en het tegelijkertijd initialiseren met de waarde 12. Een andere vorm van deze verklaring is
integer 10 = 12;
Het proces wordt kopieerinitialisatie genoemd. Een kopie-constructor wordt gebruikt wanneer het tijdelijke object wordt gemaakt. De toepassing van copy constructor is als volgt; Retournering van object als functiewaarde Initialisatie van object door een ander object van dezelfde klasse
Syntaxis
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Code
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Constructor overbelast
Wanneer meerdere constructors in dezelfde klasse worden gebruikt, wordt dit Constructor Overloading genoemd. Het geeft ons meerdere manieren om objecten in een klasse te initialiseren. Het verhoogt de flexibiliteit door meerdere constructeurs in één klasse te hebben.
Code
#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. Tweedimensionale constructor
Het is als een array in structuur en bevat rijen en kolommen. Het bevat een reeks tekenreeksen waarbij een rij een tekenreeks vertegenwoordigt en de kolom een tekenreekswaarde.
Code
// 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;
)
Syntaxis
char arrayname(x)(y);
waar 'x' het aantal rijen is, is 'y' het aantal kolommen.
Het aantal rijen moet hetzelfde zijn als het aantal strings in die array. Het nummer van de kolom moet groter zijn dan of gelijk zijn aan de lengte van de string of het kan plus één zijn
Voorbeeld
Als er 8 strings in array zijn en de lengte van de langste string 10 is, wordt de array als volgt gedefinieerd
Char days(8)(11);
6. Prive-constructeur
Het wordt gebruikt om een klasseobject voor een enkele keer te maken. Het is gedefinieerd dat klasse niet meerdere instanties van de klasse heeft. Het is hetzelfde als andere constructeurs, maar gedefinieerd als privé. Het heeft alleen toegang tot het gedefinieerde object van die klasse.
Code
classroom()
(
private:
Alleen dat deel van het programma en kan alleen binnen het privégedeelte worden geopend en gedefinieerd
Conclusie - Constructor in C
Een constructor kan nul of meer parameters aannemen. Een klasse kan een of meerdere constructors definiëren. Het is aan ons om te beslissen welke constructor moet worden uitgevoerd tijdens het maken van een object door een geschikte argumentlijst door te geven aan de constructor door de standaardwaarde voor de parameter constructor in te stellen. Aanwijzers kunnen niet worden gebruikt op constructeurs omdat hun adressen niet kunnen worden beschouwd. Constructors kunnen niet worden verklaard als statisch, const of vluchtig.
Aanbevolen artikelen
Dit is een gids voor Constructor in C. Hier bespreken we het gebruik van constructor, typen van de constructor met voorbeelden, code en uitgangen. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie-
- Kopieer Constructor In Java
- Arrays in C-programmering
- Aannemer in Python
- Constructor in JavaScript
- C Matrixvermenigvuldiging programmeren