Statické (klíčové slovo) - Static (keyword)
V některých programovacích jazycích, jako je C (a jeho blízcí potomci jako C ++ , Objective-C a Java ), static
je vyhrazené slovo ovládající jak životnost (jako statická proměnná ), tak viditelnost (v závislosti na propojení ). Účinek klíčového slova se liší v závislosti na podrobnostech konkrétního programovacího jazyka.
Běžné chování C/C ++
V jazyce C a C ++ účinek static
klíčového slova v jazyce C závisí na tom, kde k deklaraci dochází.
static
může fungovat jako třída úložiště (nezaměňovat s třídami v objektově orientovaném programování ), jak může extern
, auto
a register
(což jsou také vyhrazená slova). Každá proměnná a funkce má jednu z těchto tříd úložiště; pokud deklarace neurčuje třídu úložiště, použije se výchozí nastavení závislé na kontextu:
-
extern
pro všechny deklarace nejvyšší úrovně ve zdrojovém souboru, -
auto
pro proměnné deklarované ve funkčních orgánech.
Třída úložiště | Život | Viditelnost |
---|---|---|
extern
|
spuštění programu | externí (celý program) |
static
|
spuštění programu | interní ( pouze překladová jednotka ) |
auto , register
|
provedení funkce | (žádný) |
V těchto jazycích má termín „statická proměnná“ dva významy, které lze snadno zaměnit:
- Proměnná se stejnou životností jako program, jak je popsáno výše (nezávislá na jazyce); nebo
- (Specifické pro rodinu C) Proměnná deklarovaná s třídou úložiště
static
.
Proměnné s třídou úložiště extern
, které zahrnují proměnné deklarované na nejvyšší úrovni bez explicitní třídy úložiště, jsou static
v prvním významu, ale ne ve druhém.
Statická globální proměnná
Proměnná deklarovaná jako static
na nejvyšší úrovni zdrojového souboru (mimo jakékoli definice funkcí) je viditelná pouze v celém tomto souboru („ rozsah souboru “, také známý jako „ interní propojení “). Při tomto použití je klíčové slovo static
známé jako „ specifikátor přístupu “.
Statická funkce
Podobně statická funkce - funkce deklarovaná jako static
na nejvyšší úrovni zdrojového souboru (mimo definice všech tříd) - je viditelná pouze v celém tomto souboru („ rozsah souboru “, také známý jako „ interní propojení “).
Statické lokální proměnné
Proměnné deklarované jako static
uvnitř funkce jsou staticky přidělovány, takže si uchovávají své paměťové místo po celou dobu provádění programu, přičemž mají stejný rozsah viditelnosti jako automatické lokální proměnné ( auto
a register
), což znamená, že zůstávají pro funkci lokální. Proto jakékoli hodnoty, které funkce vloží do svých statických lokálních proměnných během jednoho volání, budou stále k dispozici, když bude funkce znovu vyvolána.
C ++ specifické
Statické členské proměnné
V C ++ jsou členské proměnné deklarované jako static
uvnitř definic tříd proměnné třídy (sdílené mezi všemi instancemi třídy, na rozdíl od proměnných instance ).
Statická metoda
Podobně statická metoda - metoda deklarovaná jako static
uvnitř definice třídy - má být relevantní pro všechny instance třídy, nikoli pro jakoukoli konkrétní instanci. Metodu deklarovanou jako static
lze volat bez vytváření instance třídy.
Jáva
Toto klíčové slovo static
znamená, že tato metoda je nyní metodou třídy; bude voláno spíše prostřednictvím názvu třídy než prostřednictvím objektu.
Statická metoda se obvykle nazývá jako <classname>.methodname()
, zatímco metoda instance se normálně nazývá jako <objectname>.methodname()
.