static c
Betydningen og brugen af statisk i C ++ med eksempler.
I vores tidligere emner om lagringsklasser blev vi introduceret til ordet statisk. Vi lærte om statiske variabler, der er erklæret i et C ++ - program. Vi ved, at statiske variabler kun initialiseres en gang, og de bevarer værdien i hele programmet.
I lighed med de statiske variabler udvider vi i denne vejledning brugen af et statisk nøgleord til:
- Statiske medlemsvariabler i en klasse
- Statiske klasseobjekter
- Statisk metode klasse
=> Tjek dybdegående C ++ træningsvejledninger her.
Hvad du lærer:
- Statiske medlemsvariabler i en klasse
- Statiske klasseobjekter
- Statiske metoder i en klasse
- Formål med statiske funktioner
- Konklusion
- Anbefalet læsning
Statiske medlemsvariabler i en klasse
En statisk variabel tildeles aldrig på en stak. De tildeles plads på forskellige statiske lagre. Dette betyder, at når vi erklærer en statisk variabel i en klasse, deles denne variabel af alle objekterne i den klasse.
Da statiske variabler kun initialiseres en gang og deles af alle objekter i en klasse, initialiseres de statiske variabler aldrig af en konstruktør. I stedet skal den statiske variabel eksplicit initialiseres uden for klassen kun én gang ved hjælp af operatoren for opløsningsområde (: :).
Når det første objekt oprettes, initialiseres alle statiske data af primitiv type til nul, når der ikke er nogen anden initialisering til stede.
Kontroller følgende eksempel, der demonstrerer den statiske variabel i en klasse.
Som vist i nedenstående kode har vi den statiske variabeloptælling som medlem af klasseprøven. Bemærk, at vi har initialiseret denne variabel eksplicit uden for klassen med den oprindelige værdi = 0;
Derefter øger vi denne statiske variabel i klassens konstruktør.
Lad os se på et eksempel på et program.
bedste virtual reality-headset til ps4
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Produktion:
Tæl = 0
Tæl = 1
Tæl = 2
I hovedfunktionen opretter vi tre forskellige objekter. I output ser vi, at værdien af den statiske variabel opretholdes mellem objektskabelserne og ikke nulstilles med hver objektoprettelse. Dette for det første objekt tæller = 0. Derefter øges det til 1. For det næste objekt tælles = 1 og så videre.
Hvis optællingen var en almindelig variabel, ville output have været:
Tæl = 0
Tæl = 0
Tæl = 0
Statiske klasseobjekter
Ligesom statiske medlemsvariabler i klassen kan vi erklære klasseobjekter som statiske. Statiske klasseobjekter initialiseres også kun én gang og forbliver aktive i hele programmet. Da objektet er en brugerdefineret type, initialiseres et statisk klasseobjekt på samme måde som de almindelige objekter ved hjælp af en konstruktør.
Lad os tage et programmeringseksempel for bedre at forstå statiske klasseobjekter.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<I dette program har vi en klasse xyz med en konstruktør og en destruktor. I hovedfunktionen erklærer vi en variabel x = 0; Hvis x er lig med nul, opretter vi et statisk objekt i klasse xyz.
c ++ 11 interviewspørgsmål
Programmet giver følgende output.
Produktion:
Konstruktør :: xyz
Afslut hoved
Destructor :: xyz
Normalt skulle output have været
Konstruktør :: xyz
Destructor :: xyz
Afslut hoved
Men når vi opretter et statisk objekt, har dette objekt et omfang indtil programmets afslutning og ikke når objektet går ud af omfanget (slutningen af if-udsagnet). Dette er grunden til, at destruktøren for objekt obj først udføres, når afslutningen på hovedfunktionen er nået.
Statiske metoder i en klasse
Vi kan også have statiske metoder i en klasse. Ligesom statiske objekter og statiske medlemsvariabler har statiske medlemsfunktioner også rækkevidde, indtil programudførelsen slutter.
Når en klassemetode erklæres statisk, kan den kun få adgang til statiske medlemmer, dvs. statiske variabler og statiske funktioner i klassen. Det kan ikke få adgang til almindelige medlemmer af klassen.
Der er heller ingen 'denne' markør tilgængelig for statiske klassemetoder.
hvordan man åbner jar-filer på Windows 10
Vi har tilladelse til at bruge objektet og prikoperatøren til at få adgang til de statiske metoder i en klasse, men det anbefales at bruge klassens navn og omfangsopløsningsoperatoren for at få adgang til disse metoder.
Nedenfor er et eksempel på brug af en statisk metode i en klasse.
I dette eksempel definerede vi to statiske medlemsvariabler A og B og en statisk metode printValues. Variablerne A og B initialiseres til henholdsvis værdierne 10 og 20. I den statiske metode printValues gennemgår værdierne A og B henholdsvis efter Increment og Pre Increment. Derefter udskrives værdierne.
I hovedmetoden kalder vi den statiske metode direkte for printValues ved hjælp af klassens navn, da vi ikke har brug for noget objekt for at påberåbe sig de statiske funktioner.
#include using namespace std; class Sample { static int A; static int B; public: static void printValues(){ A++; ++B; cout <<'Value of A: ' << A << endl; cout <<'Value of B: ' << B << endl; } }; int Sample :: A =10; int Sample :: B =20; int main(){ Sample::printValues(); return 0; }
Produktion:
Værdi af A: 11
Værdi af B: 21
Screenshotet af den samme output er angivet nedenfor.

Så i output ser vi, at værdierne for begge de statiske variabler ændres i henhold til de operationer, der udføres på dem.
Formål med statiske funktioner
Efter at have set de forskellige anvendelser af nøgleordet statisk i denne vejledning, er der stadig et spørgsmål om, hvad der er formålet med statiske funktioner.
Formålet med statiske funktioner kan opsummeres som nedenfor:
- Vi bruger statiske funktioner, når denne funktion ikke afhænger af objektet til at påkalde og arbejde.
- Endnu et andet formål med at bruge statisk funktion er at begrænse brugen. I modsætning til globale funktioner er adgangen til statiske funktioner begrænset til den fil, de er placeret i. For at begrænse adgangen til funktionen gør vi den statisk.
- Bortset fra de ovennævnte to grunde bruger vi statiske funktioner, når vi ikke ønsker at oprette et objekt i en klasse bare for at udføre en funktion, der ikke henviser til nogen klassemedlemmer.
Konklusion
For at afslutte dette emne kan vi sige, at statiske nøgleord i C ++ kan bruges på forskellige måder til at erklære variabler, medlemsvariabler, klasseobjekter, metoder osv.
Statiske medlemsfunktioner og -variabler behøver ikke at få adgang til med objektet, snarere kan de fås direkte ved hjælp af klassens navn. Omfanget af statiske enheder forbliver også under hele gennemførelsen af programmet. Derfor kan statiske nøgleord også bruges til at kontrollere adgangen til en bestemt enhed.
I vores kommende tutorials lærer vi mere om flere andre OOP-emner i C ++.
=> Tjek her for at se AZ af C ++ træningsvejledninger her.
Anbefalet læsning
- Mocking private, statiske og ugyldige metoder ved hjælp af Mockito
- Statisk test og dynamisk test - Forskellen mellem disse to vigtige testteknikker
- TOP 40 Statiske kodeanalyseværktøjer (bedste kildekodeanalyseværktøjer)
- Bedste GRATIS C # tutorialsserie: Den ultimative C # guide til begyndere
- Parameterisering af statiske værdier i LoadRunner
- Python-variabler
- Typer af arv i C ++
- Variabler i C ++