C++/Składniki statyczne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
→‎Składnia: podświetlanie składni
ilosc -> liczba (zgodnie z właściwym znaczeniem tych słów)
Linia 10:
{
protected:
static int iloscInstancjiliczbaInstancji; // pole statyczne
public:
Klasa()
{
iloscInstancjiliczbaInstancji++;
}
virtual ~Klasa()
{
iloscInstancjiliczbaInstancji--;
}
static int IloscInstancjiLiczbaInstancji()
{
return iloscInstancjiliczbaInstancji;
}
};
int Klasa::iloscInstancjiliczbaInstancji=0;
</source>
 
Jak widać do obiektów statycznych z wewnątrz klasy możemy się odwołać tak samo jak do innych pól. Pole ''IloscInstancjiliczbaInstancji'' w powyższym przykładzie nie jest jednak zwykłym polem - jest polem '''statycznym'''. Oznacza to, że powstanie tylko jedna instancja tego pola. W powyższym przykładzie ''iloscInstancjiliczbaInstancji'' ma za zadanie zliczania ile powstało obiektów klasy ''Klasa''.
 
W powyższym przykładzie ponadto istnieje '''metoda statyczna'''. Z takiej metody nie można się odwołać do niestatycznych elementów klasy. Zarówno do '''klasy statycznej''' jak do '''statycznego pola''' możemy się odwołać nawet jeżeli nie został stworzony żaden obiekt klasy ''Klasa''.
 
Odwołanie się do '''metody statycznej''' ''IloscInstancjiLiczbaInstancji'' z programu wymaga następująco:
int i=Klasa::IloscInstancjiLiczbaInstancji();
Gdyby zaś pole ''iloscInstancjiliczbaInstancji'' było publiczne, a nie chronione, to moglibyśmy się do niego odwołać poprzez:
int i=Klasa::iloscInstancjiliczbaInstancji;
Ponieważ jednak w powyższym przykładzie pole ''iloscInstancjiliczbaInstancji'' jest chronione możemy się do niego odwołać jedynie z klasy ''Klasa'' bądź z klas które po niej dziedziczą.
 
Oczywiscie metody statyczne nie mogą być wirtualne.