Úvod do konštruktora v C
Konštruktor v C sa používa na správu pamäte pri programovaní v C ++. Umožňuje vstavané typy údajov, ako sú int, float a užívateľom definované typy údajov, napríklad trieda. Konštruktor v objektovo orientovanom programovaní inicializuje premennú užívateľom definovaného typu údajov. Konštruktor pomáha pri vytváraní objektu. Meno konštruktora je rovnaké ako meno objektu, ale nemá návratový typ. Konštruktor sa vykoná automaticky, keď sa vytvorí objekt alebo špeciálny člen. Pridelí pamäť pre nový vytvorený objekt a môže byť preťažený.
kód
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Použitie konštruktora
- Je to špeciálna metóda, ktorá drží rovnaké meno ako názov triedy a inicializuje objekt pri každom jeho vytvorení. Takže je jednoduché a ľahké vykonať.
- Používa sa hlavne na správu pamäte. Používajú sa na inicializáciu a odstránenie pamäťového bloku, ak už nie sú potrebné, ak majú k dispozícii možnosti Nové a Odstrániť, ako ich určuje programátor
- Kompilátor vytvorí predvolený konštruktor pri každom vytvorení objektu. Ak ste deklarátora nevyhlásili, kompilátor by ho vytvoril. Je to užitočné, pretože objekt a funkcia v programe vedia, že objekt existuje
- Konštruktor objektu sa vytvorí, keď je inštanciou objekt, ktorý je deklarovaný. Trieda môže mať viac konštruktorov pre rôzne situácie. Preťaženie konštruktorov zvyšuje všestrannosť triedy tým, že má veľa konštruktorov v samostatnej triede.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Preto je konštruktor preťažený rôznymi hodnotami.
Druhy konštruktorov v C
Hlavné typy konštruktora sú vysvetlené takto:
1. Predvolený konštruktor
Predvolený konštruktor nemá žiadny parameter alebo súčasný parameter má predvolené hodnoty. Ak v triede nie je žiadny konštruktor definovaný používateľom, kompilátor v prípade potreby vytvorí nový a nazýva sa ako predvolený konštruktor. Toto je inline verejný člen triedy. Tento konštruktor bude mať celé telo a nebude mať inicializátor. Predvolený konštruktor neposkytuje nič konkrétne, jednoducho alokuje pamäť objektu. Konštruktor triedy X je povrchný, ak sú všetky nasledujúce tvrdenia pravdivé. Je definovaná implicitne. Ak X nemá virtuálne základné triedy a funkcie. Všetky základné triedy a nie statické členy X majú triviálne konštruktory.
2. Parametrizované konštruktory
Konštruktor, ktorý dokáže prijať argumenty, sa nazýva Parameterizované konštruktory. Môže špecifikovať argument vždy, keď je to potrebné.
kód
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. Kopírovanie Constructor
Používa sa na inicializáciu a deklarovanie jedného objektu z iného objektu
integer 10(12);
by definoval objekt 10 a súčasne ho inicializoval na hodnotu 12. Inou formou tohto tvrdenia je
integer 10 = 12;
Tento proces sa nazýva inicializácia kópie. Konštruktor kópie sa používa vždy, keď sa vytvorí dočasný objekt. Aplikácia konštruktora kópií je nasledovná; Návrat objektu ako funkčnej hodnoty Inicializácia objektu iným objektom rovnakej triedy
syntax
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
kód
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Preťaženie konštruktora
Ak sa v rovnakej triede používa viacero konštruktorov, nazýva sa to Konštruktor preťaženia. Umožňuje nám to inicializovať objekty v triede. Zvyšuje flexibilitu tým, že má viac konštruktorov v jednej triede.
kód
#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. Dvojrozmerný konštruktor
Je to ako matica v štruktúre a obsahuje riadky a stĺpce. Obsahuje pole reťazcov, kde riadok predstavuje reťazec a stĺpec predstavuje hodnotu reťazca.
kód
// 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;
)
syntax
char arrayname(x)(y);
kde 'x' je počet riadkov 'y' je počet stĺpcov.
Počet riadkov by mal byť rovnaký ako počet reťazcov v tomto poli. Číslo stĺpca by malo byť väčšie alebo rovnaké ako dĺžka reťazca alebo môže byť plus jeden
príklad
Ak je v poli 8 reťazcov a dĺžka najdlhšieho reťazca je 10, je pole definované nasledovne
Char days(8)(11);
6. Súkromný stavebník
Používa sa na vytvorenie objektu triedy naraz. Je definované, že trieda nemá viac inštancií triedy. Je to rovnaké ako iné konštruktory, ale sú definované ako súkromné. Má prístup iba k objektu definovanej triedy.
kód
classroom()
(
private:
Iba tá časť programu, ku ktorej je možné pristupovať a definovať sa iba v súkromnej časti
Záver - Konštruktor v C
Konštruktor môže mať nulové alebo viac parametrov. Trieda môže definovať jedného alebo viac konštruktorov. Je na nás, aby sme rozhodli, ktorý konštruktor sa má vykonať počas vytvárania objektu tak, že sa konštruktorovi odovzdá príslušný zoznam argumentov nastavením predvolenej hodnoty pre parameter konstruktora. Ukazovatele nemôžu byť použité na konštruktoroch, pretože ich adresy nemožno posudzovať. Konštruktory nemôžu byť vyhlásené za statické, konštantné alebo prchavé.
Odporúčané články
Toto je príručka pre konštruktora v C. Tu diskutujeme použitie konštruktora, typy konštruktora s príkladmi, kódom a výstupmi. Viac informácií nájdete aj v ďalších súvisiacich článkoch.
- Kopírovanie Constructor v Jave
- Polia v programovaní C
- Konštruktor v Pythone
- Konstruktor v JavaScripte
- C násobenie programovacej matice