C ++ klassi konstruktorid

C Class Constructors



Konstruktorid on nagu funktsioonid. Neid kasutatakse klassi väärtuste ja objektide lähtestamiseks. Need konstruktorid käivitatakse klassi objekti loomisel. Konstruktor otseselt väärtust ei tagasta. Konstruktori väärtuse saamiseks peame kirjeldama eraldi funktsiooni, kuna konstruktoril pole tagastustüüpi. Konstruktor erineb lihtsast funktsioonist erinevalt. Konstruktor luuakse objekti genereerimisel. See on määratletud klassi avalikus segmendis.

Selles artiklis kaalume näidetega kõiki seda tüüpi konstruktoreid.







Näide 1

See illustreerib vaikekonstruktorit. Nagu me teame, et konstruktorid luuakse vaikimisi automaatselt, kui loome klassi objekti. Seda nimetatakse kaudseks loomiseks. Konstruktorid on sama nimega, mis on klassi nimi. Mõelge failile, millel on konstruktori c ++ kood, kuna me teame, et klassil on kaks võimalust, privaatne ja avalik. Privaatne osa sisaldab andmemuutujaid, samas kui avalik osa on mis tahes objekti allalaaditud funktsioonide jaoks. Seega on konstruktor määratletud ka avalikus osas.



Täisarv()

{

x=viiskümmend;

ja=kakskümmend;

};

Selles konstruktoris määratakse muutujatele väärtused. Kui tahame väärtused väljundina tuua, peame need põhiprogrammis printima.







Pärast konstruktori määratlemist suletakse klass. Põhiprogrammi sisenedes prindime väärtused objekti abil. Objekt pääseb alati konstruktoritele ligi, kuna need on klassi osad. Objekti loomine on nii lihtne. Seda tehakse, lisades sellele klassi nime. Selles näites on see täisarv. Väärtus tuuakse punktmeetodi abil. st k.a.

Näeme lähtekoodi väljundit Ubuntu terminalist. Väljundi saamiseks kasutatav lähenemisviis on üsna lihtne. Esiteks kompileeritakse kood ja seejärel see käivitatakse. Koostamisprotsessis kasutame G ++ kompilaatorit. Nagu C puhul, kasutame ka GCC -d.



$ G++ -või filec filec.c

./filec

-O kasutatakse väljundi salvestamiseks faili.

Näide 2

Selles illustratsioonis selgitame parameetritega konstruktoreid. Erinevalt eelmisest näitest saame argumendid konstruktoritele edastada ka põhiprogrammist. Objekti genereerimisel edastatakse need väärtused väärtuse saamiseks automaatselt konstruktoris olevatele muutujatele. Mõned parameetritega konstruktorite kasutusalad on.

  • Seda kasutatakse erinevate muutujate lähtestamiseks konstruktorites erinevate väärtustega.
  • Seda kasutatakse konstruktori ülekoormamisel. See on määratletud artiklis hiljem.

Vaatleme nüüd illustratsiooni, mida oleme selle kontseptsiooni arendamiseks kirjeldanud. Klassi nimi on täisarv, nii et kindlasti on ka konstruktori nimi sama. Konstruktori parameetrites on kaks täisarvu tüüpi väärtust. Need lähtestatakse, et aktsepteerida põhiprogrammist funktsioonikutsena saadetud väärtusi.

Täisarv( intx,intja)

{

TO=x;

B=ja;

};

Eelmises näites anti konstruktori sees olevatele muutujatele väärtused. Selle konstruktori puhul määratakse muutujad koos väärtustega muutujatele.

Kui tahame kuvada, peame määratlema funktsiooni, mis tagastab väärtuse, kuna sellele lähtestatud muutujale pole otse konstruktorilt võimalik juurde pääseda.

intgetX()

{

tagasiet;

};

Nüüd näeme programmi põhiosa. Siin, kui objekt on loodud, näete parameetrite jaotises olevaid väärtusi.

Täisarv v(70,55); {kaudne}

täisarv v=täisarv(10,viisteist); {selgesõnaline}

Ja tulemuse kuvamiseks kutsume objekti abil klassi sees loodud funktsioonid. st v.getx ().

Salvestusmeetod on sama, mida varem tutvustati.

Näide 3

See näide käsitleb klassi konstruktori kopeerimist. Kopeeritud konstruktorit kasutatakse objekti initsialiseerimiseks mõne teise sarnase klassi objektiga, kuhu see kuulub. See konstruktor kopeerib ühes objektis olevad andmed teisele. Selle konstruktori parameetrid sisaldavad klassi objekti aadressi. Vaatleme toodud näiteid, milles oleme tutvustanud kahte sama andmetüübi muutujat, nii et neile pääseb juurde mis tahes klassi sees oleva funktsiooni abil. Konstruktor saab väärtused muutuja kaudu. Samal ajal võtab kopeeritud konstruktor vastu ainult objekti. Ja selle objekti abil tuuakse väärtused.

Sein(seina&obj)

{

Pikkus=obj.pikkus;

Kõrgus=obj.kõrgus;

}

Peame arvutama pindala, seega on selle arvutamise funktsioon siin määratletud. See tagastab väärtuse põhifunktsioonile selle kutsumisel. Nüüd jälgime koodi põhiprogrammi

Kopeeritud konstruktori funktsioonikõne on selline.

Seina sein2=sein1;

Objekt kutsub kopeeritud konstruktori ja selle kaudu kopeeritakse andmed esimese objekti kaudu. Lisaks kutsume funktsiooni, et arvutada pindala mõlema objekti kaudu.

Väljundist näete, et mõlema konstruktori tulemus on sama. See tähendab, et objekt kopeeris edukalt kõik andmed.

Näide 4

See illustreerib konstruktori ülekoormust. See juhtub siis, kui peame klassi sees kasutama rohkem kui ühte funktsiooni. Konstruktori ülekoormamine järgib parameetritega konstruktorite juhiseid. Kõigi klassi konstruktorite nimi on sarnane klassiga. Kuid igale konstruktorile on määratud erinevad parameetrid. Iga konstruktor kutsutakse vastavalt argumendile, kui loome objekti.

Vaatleme toodud näidet, milles oleme kasutanud kolme konstruktorit. Üks on ilma igasuguste argumentideta. Teine on ühe argumendiga, kolmas aga kahe argumendiga. See illustratsioon sarnaneb eelmisega. Kui arvutame pindala klassi sees kirjeldatud eraldi funktsioonis.

// Konstruktor kahe argumendiga

kuju(intx,intja)

{

et=x;

b=ja;

};

Nüüd põhiprogrammi poole liikudes näeme, et klassiobjekti käivitamisel kutsutakse vaikimisi argumendita konstruktor. Nüüd peame helistama teistele erinevate objektidega konstruktoritele, kellel on erinevad argumendid.

Kuju s;

Kuju s2(8);

Kuju s3(4,2);

Funktsiooni, mille kaudu saame väärtust kuvada, kutsutakse sama loodud objekti kaudu.

Väljundi vaatamiseks kasutame sama käsuterminali meetodit, koostades ja käivitades failis oleva koodi.

Väljundist näeme, et vastus on iga konstruktori jaoks sama.

Järeldus

Selles õpetuses oleme näinud konstruktorite põhitõdesid ja nende funktsioone, sealhulgas nende ülekoormamist. Konstruktoreid kasutatakse muutujate lähtestamiseks väärtustega.