Kas ir atmiņas klase C ++ un tā tipos?



Šajā krātuves klašu emuārā mēs aplūkosim dažādas glabāšanas klases, kas tiek izmantotas C ++, piemēram, auto, register, static, extern un mutable ar piemēriem.

Krātuves klase C ++ nosaka mainīgā / funkciju kalpošanas laiku un redzamību. Dzīves ilgums ir ilgums, līdz kuram mainīgais paliek aktīvs, un redzamība ir mainīgā pieejamība no dažādiem programmas moduļiem. Šis palīdz izsekot konkrēta mainīgā esamībai programmas izpildes laikā. Šajā krātuves klašu emuārā apskatīsim dažādas krātuves klases, kas tiek izmantotas C ++.

Sāksim.





Kas ir uzglabāšanas klase C ++?

Katram mainīgajam C ++ ir datu tips un krātuves klase. Datu tips norāda datu tipu, ko var saglabāt mainīgajā, piemēram, int, float, char utt. Uzglabāšanas klase kontrolē divas dažādas mainīgā īpašības: kalpošanas laiku un darbības jomu.

Jūs būtu redzējis, ka katram mainīgajam ir datu tips, taču, iespējams, līdz šim neesat redzējis nevienu mainīgajam pievienoto krātuves klasi. Patiesībā, ja jūs nenosakāt krātuves klasi, kompilators tai automātiski piešķir noklusējuma krātuves klasi. Mainīgā krātuves klase sniedz informāciju par mainīgā glabāšanas vietu atmiņā, noklusējuma sākotnējo vērtību, mainīgā darbības jomu un tā kalpošanas laiku.



Uzglabāšanas klases veidi

C ++ programmā ir piecas krātuves klases:

  • auto
  • reģistrēties
  • statisks
  • ārējs
  • maināms

Apspriedīsim sīkāk katru no krātuves klasēm.

Automātiskās glabāšanas klase

Automātiskā (automātiskā) glabāšanas klase ir noklusējuma glabāšanas klase visiem lokālajiem mainīgajiem, kas deklarēti funkcijas vai bloka iekšienē. Automātiskais atslēgvārds tiek reti izmantots, rakstot a C ++ programma .



Automātisko mainīgo darbības joma atrodas funkcijā vai blokā, kur tie ir deklarēti, un tam nevar piekļūt ārpus šīs funkcijas vai bloka. Tam var piekļūt arī ligzdotu bloku ietvaros vecāku blokā / funkcijā, kurā tika deklarēts automātiskais mainīgais.

Izmantojot rādītāja mainīgo, varat piekļūt automātiskajiem mainīgajiem lielumiem ārpus to darbības jomas. Jums jānorāda uz to pašu atmiņas vietu, kur atrodas mainīgie.

Tā kalpošanas laiks ir tāds pats kā funkcijas kalpošanas laiks. Kad funkcijas izpilde ir pabeigta, mainīgais tiek iznīcināts.

Pēc noklusējuma deklarēšanas laikā viņiem tiek piešķirta atkritumu vērtība.

Sintakse:

datu tips var_name1 [= vērtība]

vai

automātiskais datu tips var_name1 [= vērtība]

Iepriekš minētajā piemērā divi mainīgie ir definēti ar vienu un to pašu glabāšanas klasi. Automātisko var izmantot tikai, lai definētu lokālos mainīgos, t.i., funkciju ietvaros.

Reģistrējiet krātuves klasi

Kā norāda nosaukums, reģistra mainīgo deklarēšanai tiek izmantota reģistra krātuves klase. Visa reģistra mainīgā funkcionalizācija ir tāda pati kā automātiskais mainīgais, izņemot to, ka kompilators mēģina saglabāt šos mainīgos mikroprocesora reģistrā, ja ir pieejams bezmaksas reģistrs. Ja bezmaksas reģistrs nav pieejams, tie tiek saglabāti tikai atmiņā.

Tādējādi darbības ar reģistra mainīgajiem ir daudz ātrākas nekā citiem mainīgajiem, kas tiek saglabāti atmiņā programmas izpildes laikā.

Parasti, lai uzlabotu programmas darbības laiku, reģistra krātuves klasē tiek deklarēti daži mainīgie, kuriem bieži jāpieiet programmā. Reģistra mainīgā adresi nevar iegūt, izmantojot rādītājus.

Mainīgā lieluma maksimālais lielums ir vienāds ar reģistra lielumu (t.i., aptuveni vienu vārdu). Tam nevar būt uzlikts unārais & & operators, jo tam nav atmiņas vietas.

Sintakse:

reģistrēt datu tipu var_name1 [= vērtība]

Piemērs:

ko dara ios izstrādātājs
{reģistrēties int pi}

Definīcija “reģistrs” nenozīmē, ka mainīgais tiks saglabāts reģistrā. Tas var tikt saglabāts reģistrā atkarībā no aparatūras un ieviešanas ierobežojumiem.

Apskatīsim reģistru un automātiskās glabāšanas klašu piemēru.

Piemērs:

#include izmantojot nosaukumvietu std // mainīgā maināmā deklarēšana par ārēju // intiālo vērtību var arī inicializēt x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // deklarēt automātisko mainīgo // darbojas arī 'int a = 32') int num = 32 // izdrukājot automātisko mainīgo 'a' printf ('Mainīgā' num 'vērtība', kas deklarēts kā automātisks:% dn ', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / reģistra mainīgā reģistra deklarēšana char c = 'G' // reģistra mainīgā 'b' printf ('mainīgā' c '' 'vērtība, kas deklarēta kā reģistrs:% dn', c) printf ('---- ---------------------------- ')} int main () {// Lai parādītu automātisko krātuves klasi autoStorageClass () // Parādīt reģistrēt krātuves klasi registerStorageClass () return 0}

Izeja:

Izeja - uzglabāšanas klase C ++ - EdurekaStatiskās uzglabāšanas klase

Deklarēšanai tiek izmantota statiskā krātuves klase statiskie mainīgie . Statiskie mainīgie saglabā savu vērtību (t.i. pēdējo vērtību) pat tad, ja tie ir ārpus to darbības jomas. Statiskie mainīgie tiek inicializēti tikai vienu reizi &pastāv līdz programmas izbeigšanai.

Statiskajam mainīgajam atmiņa tiek piešķirta tikai vienu reizi, un jauna atmiņa netiek piešķirta, jo tā netiek atkārtoti deklarēta. Globālajiem statiskajiem mainīgajiem var piekļūt jebkurā programmas vietā. Pēc noklusējuma kompilators viņiem piešķir vērtību 0.

Programmā C ++, ja statisks tiek izmantots klases datu dalībniekam, visiem tā klases objektiem tiek koplietota tikai viena šī dalībnieka kopija.

Sintakse:

statiskais datu tips var_name1 [= vērtība]

Piemērs:

#include void function (void) static int c = 5 // Globālais statiskais mainīgais main () {while (c--) {function ()} return 0} void funkcija (void) {static int cnt = 2 cnt ++ std :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Izeja:

Ārējās glabāšanas klase

Ārējā krātuves klase ir nepieciešama, ja mainīgie ir jāsadala vairākos failos. Ārējiem mainīgajiem ir globāla darbības joma, un šie mainīgie ir redzami ārpus faila, kurā tie ir deklarēti. Ārējais mainīgais ir redzams visām programmām. To lieto, ja diviem vai vairākiem failiem ir viens un tas pats mainīgais vai funkcija.

Ārējo mainīgo kalpošanas laiks ir tik ilgi, kamēr tiek pārtraukta programma, kurā tā ir deklarēta. Parastu globālo mainīgo var padarīt arī par ārēju, ievietojot atslēgvārdu “extern” pirms tā deklarācijas / definīcijas jebkurā funkcijā / blokā.

Lietojot ‘extern’, mainīgo nevar inicializēt, jo viss, kas tas ir, ir norādīt mainīgā nosaukumu uz iepriekš definēto glabāšanas vietu.

Sintakse

ārējo datu tips var_name1

Piemērs

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

Otrais fails: support.cpp

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

Šeit ārējais atslēgvārds tiek izmantots, lai deklarētu cnt citā failā. Tagad apkopojiet šos divus failus šādi un mīnus

$ g ++ main.cpp support.cpp -o rakstīt

Tas radīs izpildāmo rakstīšanas programmu, mēģiniet izpildīt rakstīšanu un pārbaudiet rezultātu šādi un mīnus

$. / rakstīt

5

Pārejot uz priekšu ar glabāšanas klasi C ++, apskatīsim pēdējo, t.i., maināmo krātuves klasi.

kas ir pojo klase java

Mainīga uzglabāšanas klase

Maināms specifikators attiecas tikai uz klases objektiem, kas ļauj objekta loceklim ignorēt konstanta funkcijas funkciju. Tas ir, maināmo locekli var modificēt ar konst locekļa funkciju.

Visbeidzot, apskatīsim salīdzināšanas tabulu, lai saprastu atšķirības starp dažādām krātuves klasēm.

Uzglabāšanas klase

Atslēgvārds

Mūžs

Redzamība

Sākotnējā vērtība

Automātiski

auto

Funkciju bloks

Vietējais

Atkritumi

datu bāzes savienojamība java ar mysql

Ārējais

ārējs

Visa programma

Globāls

Nulle

Statisks

statisks

Visa programma

Vietējais

Nulle

Reģistrēties

reģistrēties

Funkciju bloks

Vietējais

Atkritumi

Maināms

maināms

Klase

Vietējais

Atkritumi

Tagad, izejot no iepriekš minētajām C ++ programmām, jūs būtu sapratuši, kas ir dažādas C ++ krātuves klases un kā tos ieviest. Es ceru, ka šis emuārs ir informatīvs un sniedz jums pievienoto vērtību.

Tādējādi mēs esam nonākuši pie šī raksta par “Krātuves klases C ++” beigām.

Ja vēlaties uzzināt vairāk, iepazīstieties ar Autors: uzticams tiešsaistes mācību uzņēmums Edureka. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts, lai apmācītu jūs gan galvenajiem, gan uzlabotajiem Java jēdzieniem kopā ar dažādiem Java ietvariem, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.