Sissejuhatus konstruktorisse C
C-s olevat konstruktorit kasutatakse C ++ programmeerimise mäluhalduses. See võimaldab sisseehitatud andmetüüpe nagu int, float ja kasutaja määratletud andmetüüpe, näiteks klass. Objektorienteeritud programmeerimise konstruktor lähtestab kasutaja määratletud andmetüübi muutuja. Ehitaja aitab objekti loomisel. Ehitaja nimi on sama mis objekti nimi, kuid sellel puudub tagastamise tüüp. Konstruktor käivitatakse objekti või eriliikme loomisel automaatselt. See eraldab loodud objekti jaoks mälu ja seda saab üle koormata.
Kood
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Ehitaja kasutusalad
- See on spetsiaalne meetod, mis omab klassi nimega sama nime ja initsialiseerib objekti alati, kui see luuakse. Nii et seda on lihtne ja hõlpsasti teostatav.
- Seda kasutatakse peamiselt mälu haldamiseks. Neid kasutatakse mäluploki lähtestamiseks ja eemaldamiseks, kui see pole enam vajalik, kui teil on programmeerija määratud suvandid Uus ja Kustuta
- Kompilaator loob objekti loomisel vaikimisi ehitaja. Kui te ehitajat ei kuulutanud, loob kompilaator selle. See on kasulik, kuna objekt ja funktsioon programmis teavad, et objekt on olemas
- Objekti konstruktor luuakse siis, kui eksemplar on deklareeritud objekt. Klassil võib olla mitu konstruktorit erinevateks olukordadeks. Ehitajate ülekoormus suurendab klassi mitmekülgsust, kuna individuaalses klassis on palju konstruktoreid.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Seetõttu on konstruktor erinevate väärtustega üle koormatud.
C konstruktori tüübid
Ehitaja peamisi tüüpe selgitatakse järgmiselt:
1. Vaikekonstruktor
Vaikekonstruktoril pole parameetrit või praegusel parameetril on vaikeväärtused. Kui klassis pole ühtegi kasutaja määratletud konstruktorit, loob kompilaator vajaduse korral uue ja seda nimetatakse vaiksektoriks. See on klassi sisemine avalik liige. Sellel konstruktoril on täiskeha ja puudub initsialiseerija. Vaikekonstruktor ei paku midagi konkreetset, see lihtsalt eraldab objektile mälu. Klassi X konstruktor on pealiskaudne, kui kõik järgmised väited vastavad tõele. See on määratletud kaudselt. Kui X-il pole virtuaalseid alusklasse ja funktsioone. Kõigil põhiklassidel ja mitte staatilistel X liikmetel on triviaalsed konstruktorid.
2. Parameetrilised konstruktorid
Ehitajat, kes suudab argumendid vastu võtta, nimetatakse parameetrilisteks konstruktoriteks. See võib argumendi täpsustada alati, kui seda vaja on.
Kood
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. Kopeeri konstruktor
Seda kasutatakse ühe objekti teisendamiseks ja deklareerimiseks teiselt objektilt
integer 10(12);
määratleks objekti 10 ja lähtestaks selle samal ajal väärtusele 12. Selle väite teine vorm on
integer 10 = 12;
Protsessi nimetatakse koopia initsialiseerimiseks. Kopeerimiskonstruktorit kasutatakse alati, kui ajutine objekt luuakse. Koopiakonstruktori rakendamine on järgmine; Objekti tagastamine funktsiooniväärtusena Objekti initsialiseerimine sama klassi teise objekti poolt
Süntaks
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Kood
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Konstruktori ülekoormus
Kui samas klassis kasutatakse mitut konstruktorit, nimetatakse seda konstruktori ülekoormuseks. See annab meile mitu viisi klassis objektide lähtestamiseks. See suurendab paindlikkust, kui ühes klassis on mitu konstruktorit.
Kood
#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. Kahemõõtmeline konstruktor
See on struktuurilt nagu massiiv ja sisaldab ridu ja veerge. See hoiab stringi massiivi, kus rida tähistab stringi ja veerg tähistab stringi väärtust.
Kood
// 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;
)
Süntaks
char arrayname(x)(y);
kus 'x' on ridade arv 'y' on veergude arv.
Ridade arv peaks olema sama kui selle massiivi stringide arv. Veeru arv peaks olema pikem või sama kui stringi pikkus, või võib see olla pluss üks
Näide
Kui massiivis on 8 stringi ja pikima stringi pikkus on 10, määratletakse massiiv järgmiselt
Char days(8)(11);
6. Erakonstruktor
Seda kasutatakse klassiobjekti loomiseks ühe aja jooksul. On määratletud, et klassil ei ole mitu klassi esinemisjuhtu. See on sama mis teised konstruktorid, kuid määratletud kui privaatne. See pääseb juurde ainult määratletud klassi objektile.
Kood
classroom()
(
private:
Ainult selle programmi osa ja sellele pääseb juurde ja seda saab määratleda ainult privaatses osas
Kokkuvõte - konstruktor C-s
Ehitaja võib võtta nulli või rohkem parameetreid. Klass võib määratleda ühe või mitu konstruktorit. Meie asi on otsustada, millist konstruktorit objekti loomise ajal täita, edastades konstruktorile sobiva argumentide loendi, määrates konstruktori parameetri vaikeväärtuse. Viiteid ei saa konstruktoritel kasutada, kuna nende aadresse ei saa arvestada. Konstruktoreid ei saa kuulutada staatilisteks, konstantseteks ega lenduvateks.
Soovitatavad artiklid
See on juhend konstruktorile C-s. Siin käsitleme konstruktori kasutamist, konstruktori tüüpe koos näidete, koodi ja väljunditega. Lisateavet leiate ka meie muudest seotud artiklitest -
- Kopeeri konstruktor Java-s
- Massiivid C-programmeerimises
- Konstruktor Pythonis
- Ehitaja JavaScriptis
- C Programmeerimismaatriksi korrutamine