static c
Betydelse och användning av statisk i C ++ med exempel.
I våra tidigare ämnen om lagringskurser introducerades vi till ordet statisk. Vi lärde oss om statiska variabler som deklareras i ett C ++ - program. Vi vet att statiska variabler initialiseras bara en gång och de behåller värdet genom hela programmet.
I likhet med de statiska variablerna utvidgar vi i denna handledning användningen av ett statiskt nyckelord till:
- Statiska medlemsvariabler i en klass
- Statiska klassobjekt
- Klass för statiska metoder
=> Kontrollera de fördjupade C ++ -utbildningsövningarna här.
Vad du kommer att lära dig:
- Statiska medlemsvariabler i en klass
- Statiska klassobjekt
- Statiska metoder i en klass
- Syftet med statiska funktioner
- Slutsats
- Rekommenderad läsning
Statiska medlemsvariabler i en klass
En statisk variabel tilldelas aldrig på en stack. De tilldelas utrymme på olika statisk lagring. Detta betyder att när vi deklarerar en statisk variabel i en klass, delas denna variabel av alla objekt i den klassen.
returnerar en matris från en metod i java
Eftersom statiska variabler initialiseras bara en gång och delas av alla objekt i en klass initialiseras de statiska variablerna aldrig av en konstruktör. Istället bör den statiska variabeln initieras uttryckligen utanför klassen endast en gång med hjälp av operatören scope resolution (: :).
När det första objektet skapas initialiseras all statisk data av primitiv typ till noll när ingen annan initialisering är närvarande.
Kontrollera följande exempel som visar den statiska variabeln i en klass.
Som visas i koden nedan har vi den statiska variabeln som räknas som medlem i klassprovet. Observera att vi har initierat denna variabel uttryckligen utanför klassen med det ursprungliga värdet = 0;
Sedan ökar vi denna statiska variabel i klassens konstruktör.
Låt oss titta på ett exempelprogram.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Produktion:
Räkna = 0
Räkna = 1
Räkna = 2
I huvudfunktionen skapar vi tre olika objekt. I utgången ser vi att värdet på den statiska variabeln bibehålls mellan objektskaperna och inte återställs för varje objektskapande. Detta för det första objektet, räkna = 0. Därefter ökas det till 1. För nästa objekt räknas = 1 och så vidare.
Om räkningen var någon vanlig variabel hade utmatningen varit:
Räkna = 0
Räkna = 0
Räkna = 0
Statiska klassobjekt
Precis som statiska medlemsvariabler i klassen kan vi förklara klassobjekt som statiska. Statiska klassobjekt initialiseras också bara en gång och förblir aktiva under hela programmet. Eftersom objektet är en användardefinierad typ initieras ett statiskt klassobjekt på samma sätt som de vanliga objekten med hjälp av en konstruktör.
Låt oss ta ett programmeringsexempel för att bättre förstå statiska klassobjekt.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<I det här programmet har vi en klass xyz med en konstruktör och en destruktör. I huvudfunktionen deklarerar vi en variabel x = 0; Om x är lika med noll skapar vi ett statiskt objekt av klass xyz.
Programmet ger följande resultat.
Produktion:
Konstruktör :: xyz
Avsluta huvud
Destructor :: xyz
Normalt skulle produktionen ha varit
bästa wow-servern för nya spelare 2017
Konstruktör :: xyz
Destructor :: xyz
Avsluta huvud
Men när vi skapar ett statiskt objekt har detta objekt en räckvidd till slutet av programmet och inte när objektet går utanför ramen (slutet av if-uttalandet). Detta är anledningen till att destruktorn för objektobjekt körs först när huvudfunktionen är slut.
Statiska metoder i en klass
Vi kan också ha statiska metoder i en klass. Precis som statiska objekt och variabler för statiska medlemmar har funktioner för statiska medlemmar också räckvidd tills programkörningen slutar.
När en klassmetod förklaras statisk kan den bara komma åt statiska medlemmars dvs statiska variabler och statiska funktioner i klassen. Det kan inte komma åt vanliga medlemmar i klassen.
Det finns inte heller någon 'den här' pekaren tillgänglig för statiska klassmetoder.
vad är den bästa appen för spionering
Vi får använda objektet och punktoperatören för att komma åt de klassiska metoderna för en klass, men det rekommenderas att använda klassnamnet och operatören för omfångsupplösning för att komma åt dessa metoder.
Nedan följer ett exempel på hur man använder en statisk metod i en klass.
I det här exemplet definierade vi två statiska medlemsvariabler A och B och en statisk metod printValues. Variablerna A och B initialiseras till värdena 10 respektive 20. I den statiska metoden printValues genomgår värdena för A och B efter Increment respektive pre Increment. Därefter skrivs värdena ut.
I huvudmetoden kallar vi direkt den statiska metoden printValues med hjälp av klassnamnet eftersom vi inte behöver något objekt för att åberopa de statiska funktionerna.
#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ärde av A: 11
Värde på B: 21
Skärmdumpen av samma utdata ges nedan.

Så i utdata ser vi att värdena för båda de statiska variablerna ändras enligt de operationer som utförs på dem.
Syftet med statiska funktioner
Efter att ha sett de olika användningsområdena för nyckelordstatisk i denna handledning återstår en fråga om vad som är syftet med statiska funktioner.
Syftet med statiska funktioner kan sammanfattas enligt nedan:
- Vi använder statiska funktioner när den funktionen inte beror på objektet för att anropa och arbeta.
- Ännu ett syfte med att använda statisk funktion är att begränsa dess användning. Till skillnad från globala funktioner är tillgången till statiska funktioner begränsad till filen de placeras i. För att begränsa åtkomsten till funktionen gör vi den statisk.
- Bortsett från ovanstående två skäl använder vi statiska funktioner när vi inte vill skapa ett objekt för en klass bara för att utföra en funktion som inte hänvisar till några klassmedlemmar.
Slutsats
För att avsluta detta ämne kan vi säga att statiska nyckelord i C ++ kan användas på olika sätt för att deklarera variabler, medlemsvariabler, klassobjekt, metoder etc.
Statiska medlemsfunktioner och variabler behöver inte nås med objektet, utan de kan direkt nås med klassnamnet. Omfattningen av statiska enheter förblir också under hela genomförandet av programmet. Därför kan statiska nyckelord också användas för att kontrollera åtkomsten för en viss enhet.
I våra kommande handledning lär vi oss mer om flera andra OOP-ämnen i C ++.
=> Kolla här för att se A-Z av C ++ träningstutorialer här.
Rekommenderad läsning
- Hånar privata, statiska och ogiltiga metoder med Mockito
- Statisk testning och dynamisk testning - Skillnaden mellan dessa två viktiga testtekniker
- TOP 40 Statiska kodanalysverktyg (Bästa verktyg för analys av källkod)
- Bästa GRATIS C # -handledningsserie: Den ultimata C # -guiden för nybörjare
- Parameterisering av statiska värden i LoadRunner
- Python-variabler
- Typer av arv i C ++
- Variabler i C ++