static c
Viktigheten og bruken av statisk i C ++ med eksempler.
I våre tidligere emner om lagringsklasser ble vi introdusert for ordet statisk. Vi lærte om statiske variabler som er deklarert i et C ++ - program. Vi vet at statiske variabler initialiseres bare en gang, og de beholder verdien gjennom hele programmet.
I likhet med de statiske variablene vil vi i denne opplæringen utvide bruken av et statisk nøkkelord til:
- Statiske medlemsvariabler i en klasse
- Statiske klasseobjekter
- Statisk metode klasse
=> Sjekk In-Depth C ++ Training Tutorials Here.
spyware å sette på mobiltelefon
Hva du vil lære:
- Statiske medlemsvariabler i en klasse
- Statisk klasseobjekter
- Statiske metoder i en klasse
- Formål med statiske funksjoner
- Konklusjon
- Anbefalt lesing
Statiske medlemsvariabler i en klasse
En statisk variabel tildeles aldri på en bunke. De får plass på forskjellig statisk lagring. Dette betyr at når vi deklarerer en statisk variabel i en klasse, deles denne variabelen av alle objektene i den klassen.
Ettersom statiske variabler kun initialiseres en gang og deles av alle objekter i en klasse, blir de statiske variablene aldri initialisert av en konstruktør. I stedet bør den statiske variabelen eksplisitt initialiseres utenfor klassen bare en gang ved bruk av operatøren for oppløsningsområde (: :).
Når det første objektet er opprettet, initialiseres alle statiske data av primitiv type til null når ingen annen initialisering er til stede.
Sjekk følgende eksempel som viser den statiske variabelen i en klasse.
Som vist i koden nedenfor, har vi den statiske variabeltellingen som medlem av klasseprøven. Merk at vi har initialisert denne variabelen eksplisitt utenfor klassen med den opprinnelige verdien = 0;
Deretter øker vi denne statiske variabelen i konstruktøren av klassen.
La oss se på et eksempel på et program.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Produksjon:
Antall = 0
Antall = 1
Telle = 2
I hovedfunksjonen lager vi tre forskjellige objekter. I utgangen ser vi at verdien av den statiske variabelen opprettholdes mellom objektopprettelsene og ikke tilbakestilles for hver objektoppretting. Dette for det første objektet, telle = 0. Deretter økes det til 1. For det neste objektet teller = 1 og så videre.
Hvis tellingen var en vanlig variabel, ville utgangen ha vært:
Antall = 0
Antall = 0
Antall = 0
Statisk klasseobjekter
Akkurat som statiske medlemsvariabler i klassen, kan vi erklære klasseobjekter som statiske. Statiske klasseobjekter initialiseres også bare en gang og forblir aktive gjennom hele programmet. Ettersom objektet er en brukerdefinert type, initialiseres et statisk klasseobjekt på samme måte som de vanlige objektene ved hjelp av en konstruktør.
beste wow-server for nye spillere 2017
La oss ta et programmeringseksempel for bedre å forstå statiske klasseobjekter.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<I dette programmet har vi en klasse xyz med en konstruktør og en destruktør. I hovedfunksjonen erklærer vi en variabel x = 0; Hvis x er lik null, lager vi et statisk objekt av klasse xyz.
Programmet gir følgende utdata.
Produksjon:
Konstruktør :: xyz
Avslutt Main
Destructor :: xyz
Normalt skulle produksjonen ha vært
Konstruktør :: xyz
Destructor :: xyz
Avslutt Main
Men når vi lager et statisk objekt, har dette objektet et omfang til slutten av programmet, og ikke når objektet går utenfor omfanget (slutten av if-setningen). Dette er grunnen til at destruktoren for objektobjekt bare utføres etter at hovedfunksjonen er nådd.
Statiske metoder i en klasse
Vi kan også ha statiske metoder i en klasse. Akkurat som statiske objekter og statiske medlemsvariabler, har statiske medlemsfunksjoner også omfang til programutførelsen avsluttes.
Når en klassemetode blir erklært statisk, kan den bare få tilgang til statiske medlemmer, dvs. statiske variabler og statiske funksjoner i klassen. Den får ikke tilgang til vanlige medlemmer av klassen.
Det er heller ingen 'denne' pekeren tilgjengelig for statiske klassemetoder.
hvordan du spiller en mkv-fil
Vi har lov til å bruke objektet og prikkoperatøren for å få tilgang til de statiske metodene til en klasse, men det anbefales å bruke klassenavnet og operatøren for omfangsoppløsning for å få tilgang til disse metodene.
Nedenfor er et eksempel på bruk av en statisk metode i en klasse.
I dette eksemplet definerte vi to statiske medlemsvariabler A og B, og en statisk metode printValues. Variablene A og B initialiseres til henholdsvis verdiene 10 og 20. I den statiske metoden printValues gjennomgår verdiene til A og B henholdsvis etter inkrement og pre increment. Etter det skrives verdiene ut.
I hovedmetoden kaller vi den statiske metoden direkte printValues ved bruk av klassenavnet, da vi ikke trenger noe objekt for å påkalle de statiske funksjonene.
#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; }
Produksjon:
Verdien av A: 11
Verdien av B: 21
Skjermbildet av samme utdata er gitt nedenfor.

Så i utgangen ser vi at verdiene til begge de statiske variablene endres i henhold til operasjonene som er utført på dem.
Formål med statiske funksjoner
Etter å ha sett de forskjellige bruksområdene for stikkord statiske i denne opplæringen, gjenstår det et spørsmål om hva som er formålet med statiske funksjoner.
Formålet med statiske funksjoner kan oppsummeres som nedenfor:
- Vi bruker statiske funksjoner når den funksjonen ikke er avhengig av objektet for å påkalle og arbeide.
- Enda et annet formål med å bruke statisk funksjon er å begrense bruken. I motsetning til globale funksjoner er tilgang til statiske funksjoner begrenset til filen de er plassert i. For å begrense tilgangen til funksjonen, gjør vi den statisk.
- Bortsett fra de to ovennevnte grunnene, bruker vi statiske funksjoner når vi ikke ønsker å lage et objekt av en klasse bare for å utføre en funksjon som ikke refererer til noen klassemedlemmer.
Konklusjon
For å avslutte dette emnet kan vi si at statiske nøkkelord i C ++ kan brukes på forskjellige måter for å erklære variabler, medlemsvariabler, klasseobjekter, metoder osv.
Statiske medlemsfunksjoner og -variabler trenger ikke å få tilgang til med objektet, de kan heller nås direkte ved hjelp av klassenavnet. Omfanget av statiske enheter forblir også gjennom hele gjennomføringen av programmet. Derfor kan statiske nøkkelord også brukes til å kontrollere tilgangen til en bestemt enhet.
I våre kommende veiledninger vil vi lære mer om flere andre OOP-emner i C ++.
=> Sjekk her for å se AZ av C ++ opplæringsveiledninger her.
Anbefalt lesing
- Spotte private, statiske og ugyldige metoder ved bruk av Mockito
- Statisk testing og dynamisk testing - Forskjellen mellom disse to viktige testteknikkene
- TOPP 40 Verktøy for analyse av statiske koder (beste verktøy for kildekodeanalyse)
- Beste GRATIS C # opplæringsserie: The Ultimate C # Guide For Beginners
- Parameterisering av statiske verdier i LoadRunner
- Python-variabler
- Typer arv i C ++
- Variabler i C ++