logo

Statisks atslēgvārds programmā C++

Priekšnosacījums: Statiskie mainīgie C

kopu algebra

Statiskajam atslēgvārdam ir atšķirīga nozīme, ja to lieto kopā ar dažādiem veidiem. Mēs varam izmantot statiskus atslēgvārdus ar:



    Statiskie mainīgie: mainīgie funkcijās, mainīgie klasē Statiskie klases locekļi: klases objekti un funkcijas klasē Apskatīsim katru no šiem statikas lietojumiem sīkāk.

Statiskie mainīgie

Statiskie mainīgie funkcijā : ja mainīgais ir deklarēts kā statisks, atstarpe tas tiek piešķirts programmas darbības laikā . Pat ja funkcija tiek izsaukta vairākas reizes, vieta statiskajam mainīgajam tiek piešķirta tikai vienu reizi, un mainīgā vērtība iepriekšējā izsaukumā tiek pārnesta nākamajā funkcijas izsaukumā. Tas ir noderīgi, lai ieviestu korutīnas programmā C/C++ vai jebkurā citā lietojumprogrammā, kurā ir jāsaglabā iepriekšējais funkcijas stāvoklis.

C++








// C++ program to demonstrate> // the use of static Static> // variables in a Function> #include> #include> using> namespace> std;> void> demo()> {> >// static variable> >static> int> count = 0;> >cout << count <<>' '>;> >// value is updated and> >// will be carried to next> >// function calls> >count++;> }> int> main()> {> >for> (>int> i = 0; i <5; i++)> >demo();> >return> 0;> }>

>

>

Izvade

0 1 2 3 4>

Iepriekš minētajā programmā var redzēt, ka mainīgo skaits ir deklarēts kā statisks. Tātad tā vērtība tiek pārnesta, izmantojot funkciju izsaukumus. Mainīgais skaits netiek inicializēts katru reizi, kad tiek izsaukta funkcija. Jāpiebilst, ka Java nepieļauj statiskus vietējos mainīgos funkcijās.

Statiskie mainīgie klasē : Tā kā mainīgie, kas deklarēti kā statiski, tiek inicializēti tikai vienu reizi, jo tiem tiek piešķirta vieta atsevišķā statiskajā krātuvē, tāpēc statiskie mainīgie klasē koplieto objekti. Nevar būt vairākas vienu un to pašu statisko mainīgo kopiju dažādiem objektiem. Arī šī iemesla dēļ statiskos mainīgos nevar inicializēt, izmantojot konstruktorus.

C++




// C++ program to demonstrate static> // variables inside a class> #include> using> namespace> std;> class> GfG {> public>:> >static> int> i;> >GfG(){> >// Do nothing> >};> };> int> main()> {> >GfG obj1;> >GfG obj2;> >obj1.i = 2;> >obj2.i = 3;> >// prints value of i> >cout << obj1.i <<>' '> << obj2.i;> }>

>

>

java programmatūras modeļi

Izvade

undefined reference to `GfG::i' collect2: error: ld returned 1 exit status>

Iepriekš minētajā programmā varat redzēt, ka esam mēģinājuši izveidot vairākas statiskā mainīgā i kopijas vairākiem objektiem. Bet tas nenotika. Tātad, statiskais mainīgais klasē lietotājam ir skaidri jāinicializē, izmantojot klases nosaukumu un tvēruma izšķirtspējas operatoru ārpus klases, kā parādīts tālāk:

C++




// C++ program to demonstrate static> // variables inside a class> #include> using> namespace> std;> class> GfG {> public>:> >static> int> i;> >GfG(){> >// Do nothing> >};> };> int> GfG::i = 1;> int> main()> {> >GfG obj;> >// prints value of i> >cout << obj.i;> }>

>

>

Izvade

1>

Statiski klases locekļi

Klasificējiet objektus kā statiskus : Tāpat kā mainīgajiem, arī objektiem, kas deklarēti kā statiski, ir darbības joma līdz programmas darbības laikam. Apsveriet tālāk norādīto programmu, kurā objekts nav statisks.

C++


vārdu ietīšana css



// CPP program to illustrate> // when not using static keyword> #include> using> namespace> std;> class> GfG {> >int> i;> public>:> >GfG()> >{> >i = 0;> >cout <<>'Inside Constructor '>;> >}> >~GfG() { cout <<>'Inside Destructor '>; }> };> int> main()> {> >int> x = 0;> >if> (x == 0) {> >GfG obj;> >}> >cout <<>'End of main '>;> }>

>

>

Izvade

Inside Constructor Inside Destructor End of main>

Iepriekš minētajā programmā objekts if blokā tiek deklarēts kā nestatisks. Tātad mainīgā lieluma apjoms ir tikai if blokā. Tātad, kad objekts ir izveidots, tiek izsaukts konstruktors un, tiklīdz tiek izsaukta if bloka kontrole pār destruktoru, jo objekta darbības joma atrodas if blokā tikai tur, kur tas ir deklarēts. Tagad redzēsim izejas izmaiņas, ja objektu deklarēsim kā statisku.

C++




// CPP program to illustrate> // class objects as static> #include> using> namespace> std;> class> GfG {> >int> i = 0;> public>:> >GfG()> >{> >i = 0;> >cout <<>'Inside Constructor '>;> >}> >~GfG() { cout <<>'Inside Destructor '>; }> };> int> main()> {> >int> x = 0;> >if> (x == 0) {> >static> GfG obj;> >}> >cout <<>'End of main '>;> }>

>

>

java kolekcijas java
Izvade

Inside Constructor End of main Inside Destructor>

Jūs varat skaidri redzēt izlaides izmaiņas. Tagad destruktors tiek izsaukts pēc galvenā beigām. Tas notika tāpēc, ka statisko objektu apjoms ir visā programmas darbības laikā.

Statiskās funkcijas klasē : Tāpat kā statisko datu elementi vai statiskie mainīgie klasē, arī statiskās locekļa funkcijas nav atkarīgas no klases objekta. Mums ir atļauts izsaukt statisko dalībnieka funkciju, izmantojot objektu un operatoru “.”, taču ieteicams izsaukt statiskos dalībniekus, izmantojot klases nosaukumu un tvēruma izšķirtspējas operatoru. Statiskām dalībnieka funkcijām ir atļauts piekļūt tikai statisko datu elementiem vai citām statiskām dalībnieku funkcijām , viņi nevar piekļūt klases nestatisko datu dalībniekiem vai dalībnieku funkcijām.

C++




// C++ program to demonstrate static> // member function in a class> #include> using> namespace> std;> class> GfG {> public>:> >// static member function> >static> void> printMsg() { cout <<>'Welcome to GfG!'>; }> };> // main function> int> main()> {> >// invoking a static member function> >GfG::printMsg();> }>

>

>

Izvade

Welcome to GfG!>

Saistītie raksti:

  • Viktorīna par statisku atslēgvārdu
  • Statisko datu dalībnieki programmā C++
  • Kad tiek iznīcināti statiski objekti?
  • Interesanti fakti par statiskām dalībnieku funkcijām
  • Vai statiskās funkcijas var būt virtuālas?
  • Statiskā atslēgvārda salīdzinājums C++ un Java
  • Statiskās funkcijas C