C ++ klases konstruktori

C Class Constructors



Konstruktori ir kā funkcijas. Tos izmanto, lai inicializētu klases vērtības un objektus. Šie konstruktori tiek uzsākti, kad tiek izveidots klases objekts. Konstruktors tieši neatgriež vērtību. Lai iegūtu konstruktora vērtību, mums ir jāapraksta atsevišķa funkcija, jo konstruktoram nav atgriešanās veida. Konstruktors atšķiras no vienkāršās funkcijas dažādos veidos. Konstruktors tiek izveidots, kad tiek ģenerēts objekts. Tas ir definēts klases publiskajā segmentā.

Šajā rakstā mēs apspriedīsim visu veidu konstruktorus ar piemēriem.







1. piemērs

Šī ir noklusējuma konstruktora ilustrācija. Kā mēs zinām, konstruktori pēc noklusējuma tiek izveidoti automātiski, kad mēs veidojam klases objektu. To sauc par netiešu radīšanu. Konstruktori ir ar tādu pašu nosaukumu, kāds ir klases nosaukums. Apsveriet failu ar konstruktora c ++ kodu, jo mēs zinām, ka klasei ir divas iespējas - privāta un publiska. Privātā daļa satur datu mainīgos, turpretī publiskā daļa ir paredzēta jebkura objekta izgūtajām funkcijām. Tātad konstruktors ir definēts arī publiskajā daļā.



Vesels skaitlis()

{

x=piecdesmit;

un=divdesmit;

};

Šajā konstruktorā mainīgajiem tiek piešķirtas vērtības. Ja mēs vēlamies iegūt vērtības kā izvadi, mums tās ir jāizdrukā galvenajā programmā.







Pēc konstruktora noteikšanas klase tiek slēgta. Ieejot galvenajā programmā, mēs izdrukāsim vērtības, izmantojot objektu. Objekts vienmēr piekļūst konstruktoriem, jo ​​tās ir klases daļas. Objekta izveide ir tik vienkārša. Tas tiek darīts, ievadot to ar klases nosaukumu. Šajā piemērā tas ir vesels skaitlis. Vērtība tiks iegūta, izmantojot punktu metodi. i., a.x.

Mēs varam redzēt avota koda izvadi no termināļa Ubuntu. Izlaides iegūšanai izmantotā pieeja ir diezgan vienkārša. Pirmkārt, kods tiek apkopots un pēc tam izpildīts. Kompilācijas procesā mēs izmantojam G ++ kompilatoru. Tāpat kā C gadījumā, mēs izmantojam GCC.



$ G++ -vai filec filec.c

./filec

-O tiek izmantots, lai saglabātu izvadi failā.

2. piemērs

Šajā ilustrācijā mēs izskaidrosim parametrētos konstruktorus. Atšķirībā no iepriekšējā piemēra, mēs varam arī pārsūtīt argumentus konstruktoriem no galvenās programmas. Kad objekts tiek ģenerēts, šīs vērtības tiek automātiski nodotas konstruktorā esošajiem mainīgajiem, lai saņemtu vērtību. Daži no parametrizēto konstruktoru izmantošanas veidiem ir.

  • To izmanto, lai inicializētu dažādus mainīgos ar dažādām vērtībām konstruktoru iekšpusē.
  • To izmanto konstruktora pārslodzē. Tas ir definēts vēlāk rakstā.

Tagad aplūkosim mūsu aprakstīto ilustrāciju, lai izstrādātu šo jēdzienu. Klases nosaukums ir vesels skaitlis, tāpēc noteikti arī konstruktora vārds būs tāds pats. Konstruktora parametros ir divas vesela skaitļa tipa vērtības. Tie tiek inicializēti, lai pieņemtu vērtības, kas no galvenās programmas tiek sūtītas kā funkciju izsaukums.

Vesels skaitlis( intx,intun)

{

TO=x;

B=un;

};

Iepriekšējā piemērā mainīgajiem konstruktora iekšienē tika dotas vērtības. Tā kā šajā konstruktorā mainīgie tiek piešķirti ar mainīgajiem, kuriem ir vērtība.

Ja mēs vēlamies izmantot displeju, mums ir jādefinē funkcija, kas atgriezīs vērtību, jo šim inicializētajam mainīgajam nav iespējams piekļūt tieši no konstruktora.

intgetX()

{

atgrieztiesuz;

};

Tagad mēs redzēsim programmas galveno daļu. Šeit, kad objekts ir izveidots, jūs varat redzēt vērtības parametru sadaļā.

Vesels skaitlis v(70,55); {netieši}

vesels skaitlis v=vesels skaitlis(10,piecpadsmit); {nepārprotami}

Un, lai parādītu rezultātu, mēs izsauksim funkcijas, kas izveidotas klasē, izmantojot objektu. i., v.getx ().

Ierakstu iegūšanas metode ir tāda pati kā iepriekš.

3. piemērs

Šis piemērs attiecas uz klases konstruktoru kopēšanu. Kopēts konstruktors tiek izmantots, lai inicializētu objektu ar citu līdzīgas klases objektu, kuram tas pieder. Šis konstruktors kopē vienā objektā esošos datus uz otru. Šī konstruktora parametri satur klases objekta adresi. Apsveriet minētos piemērus, kuros mēs esam ieviesuši divus vienādu datu veidu mainīgos, lai tiem varētu piekļūt jebkura funkcija klasē. Konstruktors saņems vērtības, izmantojot mainīgo. Tajā pašā laikā kopētais konstruktors saņems tikai objektu. Un ar šī objekta palīdzību tiks iegūtas vērtības.

Siena(siena&obj)

{

Garums=obj.garums;

Augstums=obj.augstums;

}

Mums ir jāaprēķina platība, tāpēc šī aprēķina funkcija ir definēta šeit. Tas atgriezīs vērtību galvenajā funkcijā, kad tā tiks izsaukta. Tagad mēs ievērosim koda galveno programmu

Kopētā konstruktora funkciju izsaukums būs šāds.

Sienas siena2=siena1;

Objekts izsauc kopēto konstruktoru, un dati caur pirmo objektu tiek kopēti caur to. Turklāt mēs izsauksim funkciju, lai aprēķinātu laukumu, izmantojot abus objektus.

No izvades jūs varat redzēt, ka abu konstruktoru rezultāts ir vienāds. Tas nozīmē, ka objekts veiksmīgi kopēja visus datus.

4. piemērs

Šī ir konstruktora pārslodzes ilustrācija. Tas notiek, ja mums klasē ir jāizmanto vairāk nekā viena funkcija. Konstruktoru pārslodze notiek saskaņā ar parametrēto konstruktoru norādījumiem. Visiem klases konstruktoriem ir līdzīgs nosaukums kā klasei. Bet katram no konstruktoriem tiek piešķirti dažādi parametri. Katrs konstruktors tiek izsaukts saskaņā ar argumentu, kad mēs veidojam objektu.

Apsveriet doto piemēru, kurā esam izmantojuši trīs konstruktorus. Viens ir bez jebkādiem argumentiem. Otrais ir ar vienu argumentu, bet trešais - ar diviem argumentiem. Šī ilustrācija ir līdzīga iepriekšējai. Aprēķinot laukumu atsevišķajā klasē aprakstītajā funkcijā.

// Konstruktors ar diviem argumentiem

forma(intx,intun)

{

uz=x;

b=un;

};

Tagad, virzoties uz galveno programmu, mēs varam redzēt, ka, uzsākot klases objektu, pēc noklusējuma tiek izsaukts konstruktors bez argumentiem. Tagad mums ir jāsauc citi konstruktori ar dažādiem objektiem, kuriem ir dažādi argumenti.

Formas;

Forma s2(8);

Forma s3(4,2);

Funkcija, ar kuras palīdzību mēs varam parādīt vērtību, tiek izsaukta, izmantojot to pašu izveidoto objektu.

Lai apskatītu izvadi, mēs izmantosim to pašu komandu termināļa metodi, apkopojot un izpildot failā esošo kodu.

No izvades mēs varam redzēt, ka atbilde ir vienāda katram konstruktoram.

Secinājums

Šajā apmācībā mēs esam redzējuši konstruktoru pamatus un to funkcionalitāti, tostarp to pārslodzi. Konstruktori tiek izmantoti, lai inicializētu mainīgos ar vērtībām.