Konstruktor C - Konstruktori kasutusviisid ja tüübid koos näidetega

Lang L: none (table-of-contents):

Anonim

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 -

  1. Kopeeri konstruktor Java-s
  2. Massiivid C-programmeerimises
  3. Konstruktor Pythonis
  4. Ehitaja JavaScriptis
  5. C Programmeerimismaatriksi korrutamine