Johdanto konstruktorista C: ssä
C: n konstruktoria käytetään C ++-ohjelmoinnin muistin hallintaan. Se sallii sisäänrakennetut tietotyypit, kuten int-, float- ja käyttäjän määrittämät tietotyypit, kuten luokka. Objektorientoidussa ohjelmoinnissa rakentaja alustaa käyttäjän määrittämän tietotyypin muuttujan. Rakentaja auttaa objektin luomisessa. Rakentajan nimi on sama kuin objektin nimi, mutta sillä ei ole paluutyyppiä. Rakentaja suoritetaan automaattisesti, kun objekti tai erikoisjäsen luodaan. Se varaa muistin luodulle uudelle objektille ja se voidaan ylikuormittaa.
Koodi
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Rakentajan käyttö
- Se on erikoismenetelmä, jolla on sama nimi kuin luokan nimellä ja alustetaan objekti aina, kun se luodaan. Joten se on yksinkertainen ja helppo suorittaa.
- Sitä käytetään pääasiassa muistin hallintaan. Niitä käytetään alustamaan ja poistamaan muistilohko, kun sitä ei enää tarvita, koska ohjelmoija on määrittänyt Uudet ja Poista-asetukset
- Kääntäjä luo oletuskonstruktorin aina, kun objekti luodaan. Kun et ilmoittanut rakentajaa, kääntäjä luo sellaisen. Se on hyödyllistä, koska ohjelman kohde ja funktio tietävät objektin olemassa olevan
- Objektin rakentaja luodaan, kun ilmentymä on objekti, joka on ilmoitettu. Luokassa voi olla useita rakentajia eri tilanteisiin. Konstruktorien ylikuormitus lisää luokan monipuolisuutta, koska yksittäisessä luokassa on paljon rakentajia.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Siksi rakentaja on ylikuormitettu eri arvoilla.
C: n rakentajatyypit
Rakentajan päätyypit selitetään seuraavasti:
1. Oletusrakentaja
Oletuskonstruktorilla ei ole parametria tai nykyisellä parametrilla on oletusarvot. Jos luokassa ei ole käyttäjän määrittämää rakentajaa, kääntäjä luo tarvittaessa uuden ja sitä kutsutaan oletuskonstruktoriksi. Tämä on luokan sisäinen julkinen jäsen. Tällä rakentajalla on täysi runko eikä alustaa. Oletusrakentaja ei tarjoa mitään tarkkaa, se vain varaa muistin objektiin. Luokan X rakentaja on pinnallinen, jos kaikki seuraavat väitteet ovat totta. Se on määritelty epäsuorasti. Jos X: llä ei ole virtuaalisia kantaluokkia ja toimintoja. Kaikilla perusluokilla eikä X: n staattisilla jäsenillä on triviaalisia konstruktoreita.
2. Parametrisoidut rakentajat
Rakentajaa, joka hyväksyy argumentit, kutsutaan parametrisoiduiksi rakentajiksi. Se voi määritellä argumentin aina kun sitä tarvitaan.
Koodi
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. Kopiorakentaja
Sitä käytetään alustamaan ja ilmoittamaan yksi objekti toisesta objektista
integer 10(12);
määrittelee kohteen 10 ja alustaa sen samalla arvoon 12. Tämän lauseen toinen muoto on
integer 10 = 12;
Prosessia kutsutaan kopion alustukseksi. Kopiorakentajaa käytetään aina, kun väliaikainen objekti luodaan. Kopiokonstruktorin sovellukset ovat seuraavat; Objektin palautus funktion arvona Objektin alustus toisen luokan toisen objektin avulla
Syntaksi
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Koodi
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Rakentajan ylikuormitus
Kun samassa luokassa käytetään useita rakentajia, sitä kutsutaan rakentajan ylikuormitukseksi. Se antaa meille useita tapoja alustaa objektit luokassa. Se lisää joustavuutta, koska sillä on useita konstruktoreita samassa luokassa.
Koodi
#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. Kaksiulotteinen rakentaja
Se on rakenteeltaan kuin taulukko ja sisältää rivejä ja sarakkeita. Siinä on merkkijono, jossa rivi edustaa merkkijonoa ja sarake merkkijonon arvoa.
Koodi
// 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;
)
Syntaksi
char arrayname(x)(y);
missä 'x' on rivien lukumäärä 'y' on sarakkeiden lukumäärä.
Rivien lukumäärän tulee olla sama kuin sarjan merkkijonojen lukumäärä. Sarakkeen lukumäärän tulee olla suurempi tai yhtä suuri kuin merkkijonon pituus tai se voi olla plus yksi
esimerkki
Jos ryhmässä on 8 merkkijonoa ja pisin merkkijono on 10, taulukko määritetään seuraavasti
Char days(8)(11);
6. Yksityinen rakentaja
Sitä käytetään luokkaobjektin luomiseen yhdellä kertaa. On määritelty, että luokalla ei ole useita luokan esiintymiä. Se on sama kuin muut rakentajat, mutta määritelty yksityiseksi. Se voi käyttää vain määritetyn luokan objektia.
Koodi
classroom()
(
private:
Vain se osa ohjelmaa, jota voidaan käyttää ja määritellä vain yksityisessä osassa
Johtopäätös - Suunnittelija C: ssä
Rakentaja voi ottaa nolla tai enemmän parametreja. Luokka voi määritellä yhden tai useamman rakentajan. Meidän on päätettävä, mikä rakentaja suoritetaan objektin luomisen aikana lähettämällä sopiva argumenttiluettelo rakentajalle asettamalla oletusarvon rakentajaparametrille. Osoittimia ei voida käyttää konstruktoreissa, koska niiden osoitteita ei voida ottaa huomioon. Rakenteita ei voida julistaa staattisiksi, konstreiksi tai haihtuviksi.
Suositellut artikkelit
Tämä on opas rakentajalle C: ssä. Keskustelemme tässä konstruktorin käytöstä, rakennustyypeistä esimerkkien, koodin ja tuotoksien kanssa. Voit myös käydä läpi muiden aiheeseen liittyvien artikkeleidemme saadaksesi lisätietoja-
- Kopioi rakentaja Java
- Ryhmät C-ohjelmoinnissa
- Rakentaja Pythonissa
- Rakentaja JavaScript
- C Matriisin kertolaskun ohjelmointi