static c
Dôležitosť a použitie statického v C ++ s príkladmi.
V našich predchádzajúcich témach o triedach úložných priestorov sme sa oboznámili so slovom statický. Dozvedeli sme sa o statických premenných, ktoré sú deklarované v programe C ++. Vieme, že statické premenné sa inicializujú iba raz a zachovajú si hodnotu v celom programe.
Podobne ako statické premenné, aj v tomto tutoriále rozšírime použitie statického kľúčového slova na:
- Statické členské premenné v triede
- Objekty statickej triedy
- Trieda statických metód
=> Tu si pozrite podrobné výukové návody C ++.
Čo sa dozviete:
- Statické premenné člena v triede A.
- Statické objekty triedy
- Statické metódy v triede A.
- Účel statických funkcií
- Záver
- Odporúčané čítanie
Statické premenné člena v triede A.
Statická premenná sa na zásobník nikdy nepridelí. Je im pridelený priestor na rôznych statických úložiskách. To znamená, že keď deklarujeme statickú premennú v triede, túto premennú zdieľajú všetky objekty tejto triedy.
Pretože statické premenné sa inicializujú iba raz a zdieľajú ich všetky objekty triedy, statické premenné sa nikdy neinicializujú konštruktorom. Namiesto toho by mala byť statická premenná explicitne inicializovaná mimo triedy iba raz pomocou operátora rozlíšenia rozsahu (: :).
Po vytvorení prvého objektu sa všetky statické údaje primitívneho typu inicializujú na nulu, ak nie je k dispozícii žiadna iná inicializácia.
Skontrolujte nasledujúci príklad, ktorý demonštruje statickú premennú v triede.
Ako je uvedené v nasledujúcom kóde, máme počet statických premenných ako člena vzorky triedy. Všimnite si, že sme túto premennú inicializovali výslovne mimo triedy s počiatočnou hodnotou = 0;
Potom zvýšime túto statickú premennú v konštruktore triedy.
Pozrime sa na ukážkový program.
čo je testovanie zdravého rozumu pri testovaní softvéru
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Výkon:
Počet = 0
Počet = 1
Počet = 2
V hlavnej funkcii vytvoríme tri rôzne objekty. Na výstupe vidíme, že hodnota statickej premennej je udržiavaná medzi výtvormi objektov a nenulovaná pri každom vytvorení objektu. Toto pre prvý objekt počet = 0. Potom sa zvýši na 1. Pre ďalší objekt počet = 1 atď.
Ak by bol počet nejaká bežná premenná, potom by to bol výstup:
Počet = 0
Počet = 0
Počet = 0
Statické objekty triedy
Rovnako ako statické členské premenné triedy, aj objekty triedy môžeme vyhlásiť za statické. Objekty statickej triedy sa tiež inicializujú iba raz a zostanú aktívne počas celého programu. Pretože objekt je používateľom definovaný typ, objekt statickej triedy sa inicializuje podobne ako bežné objekty pomocou konštruktora.
Zoberme si príklad programovania, aby sme lepšie porozumeli objektom statickej triedy.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<V tomto programe máme triedu xyz s konštruktorom a deštruktorom. V hlavnej funkcii deklarujeme premennú x = 0; Ak sa x rovná nule, vytvoríme statický objekt triedy xyz.
rozdiel medzi testovaním záťaže a testovaním výkonu
Program poskytuje nasledujúci výstup.
Výkon:
Konštruktér :: xyz
Koniec hlavnej
Destruktor :: xyz
Normálne mal byť výstup
Konštruktér :: xyz
Destruktor :: xyz
Koniec hlavnej
Ale keď vytvárame statický objekt, tento objekt má rozsah až do konca programu, a nie keď objekt vyjde z rozsahu (vyhlásenie if). To je dôvod, pre ktorý sa deštruktor pre objekt obj vykoná až po dosiahnutí konca hlavnej funkcie.
Statické metódy v triede A.
V triede môžeme mať aj statické metódy. Rovnako ako statické objekty a statické členské premenné, aj statické členské funkcie majú rozsah, kým sa neskončí vykonávanie programu.
Keď je metóda triedy vyhlásená za statickú, má prístup iba k statickým členom, t. J. K statickým premenným a statickým funkciám triedy. Nemá prístup k bežným členom triedy.
Pre metódy statickej triedy tiež nie je k dispozícii žiadny „tento“ ukazovateľ.
najlepší server na hranie
Na prístup k statickým metódam triedy môžeme používať operátor objektu a bodku, ale na prístup k týmto metódam sa odporúča použiť názov triedy a operátor rozlíšenia rozsahu.
Nižšie je uvedený príklad použitia statickej metódy v triede.
V tomto príklade sme definovali dve statické členské premenné A a B a statickú metódu printValues. Premenné A a B sa inicializujú na hodnoty 10, respektíve 20. V statickej metóde printValues hodnoty A a B prechádzajú po prírastku, respektíve pred prírastkom. Potom sa hodnoty vytlačia.
V hlavnej metóde priamo nazývame statickú metódu printValues pomocou názvu triedy, pretože na vyvolanie statických funkcií nepotrebujeme žiadny objekt.
#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; }
Výkon:
Hodnota A: 11
Hodnota B: 21
Screenshot rovnakého výstupu je uvedený nižšie.
Takže na výstupe vidíme, že hodnoty oboch statických premenných sa menia podľa operácií vykonaných s nimi.
Účel statických funkcií
Po oboznámení sa s rôznymi spôsobmi použitia kľúčového slova static v tomto tutoriále zostáva otázkou, aký je účel statických funkcií.
Účel statických funkcií je možné zhrnúť nižšie:
- Statické funkcie používame, keď táto funkcia nezávisí od vyvolania a práce od objektu.
- Ďalším účelom použitia statickej funkcie je obmedziť jej použitie. Na rozdiel od globálnych funkcií je prístup k statickým funkciám obmedzený na súbor, do ktorého sú umiestnené. Preto, aby sme obmedzili prístup k funkciám, urobíme ich statickým.
- Okrem vyššie uvedených dvoch dôvodov používame statické funkcie, keď nechceme vytvoriť objekt triedy iba na vykonanie funkcie, ktorá neodkazuje na žiadnych členov triedy.
Záver
Na záver tejto témy môžeme povedať, že statické kľúčové slovo v C ++ je možné použiť rôznymi spôsobmi na deklarovanie premenných, členských premenných, objektov triedy, metód atď.
Statické členské funkcie a premenné nemusia byť prístupné spolu s objektom, skôr k nim možno získať priamy prístup pomocou názvu triedy. Počas vykonávania programu tiež zostáva rozsah statických entít. Preto možno statické kľúčové slovo použiť aj na riadenie prístupu konkrétnej entity.
V našich pripravovaných tutoriáloch sa dozvieme viac o niekoľkých ďalších témach OOP v C ++.
=> Ak chcete vidieť A-Z výučbových kurzov C ++, kliknite sem.
Odporúčané čítanie
- Posmievanie súkromných, statických a neplatných metód pomocou makety
- Statické testovanie a dynamické testovanie - rozdiel medzi týmito dvoma dôležitými testovacími technikami
- TOP 40 nástrojov na analýzu statického kódu (najlepšie nástroje na analýzu zdrojového kódu)
- Najlepšia výučbová séria C # ZDARMA: Sprievodca C # pre začiatočníkov
- Parametrizácia statických hodnôt v LoadRunneri
- Premenné Pythonu
- Typy dedenia v C ++
- Premenné v C ++