static c
Znaczenie i użycie statycznego w C ++ z przykładami.
jak wykonać plik jar
W naszych poprzednich tematach dotyczących klas pamięci masowej poznaliśmy słowo statyczne. Dowiedzieliśmy się o zmiennych statycznych, które są zadeklarowane w programie w C ++. Wiemy, że zmienne statyczne są inicjalizowane tylko raz i zachowują wartość przez cały program.
Podobnie jak w przypadku zmiennych statycznych, w tym samouczku rozszerzymy użycie statycznego słowa kluczowego na:
- Statyczne zmienne składowe w klasie
- Statyczne obiekty klasowe
- Klasa metod statycznych
=> Zobacz szczegółowe samouczki szkoleniowe C ++ tutaj.
Czego się nauczysz:
- Statyczne zmienne składowe w klasie
- Statyczne obiekty klasowe
- Metody statyczne w klasie A.
- Cel funkcji statycznych
- Wniosek
- rekomendowane lektury
Statyczne zmienne składowe w klasie
Zmienna statyczna nigdy nie jest przydzielana na stosie. Przydzielane jest im miejsce w innej pamięci statycznej. Oznacza to, że kiedy deklarujemy zmienną statyczną w klasie, zmienna ta jest wspólna dla wszystkich obiektów tej klasy.
Ponieważ zmienne statyczne są inicjowane tylko raz i są współużytkowane przez wszystkie obiekty klasy, zmienne statyczne nigdy nie są inicjowane przez konstruktor. Zamiast tego zmienna statyczna powinna być jawnie zainicjowana poza klasą tylko raz przy użyciu operatora rozpoznawania zakresu (: :).
Podczas tworzenia pierwszego obiektu wszystkie dane statyczne typu pierwotnego są inicjowane do zera, gdy nie ma innej inicjalizacji.
Sprawdź poniższy przykład, który demonstruje zmienną statyczną w klasie.
Jak pokazano w poniższym kodzie, mamy statyczną zmienną count jako element członkowski klasy próbki. Zauważ, że zainicjowaliśmy tę zmienną jawnie poza klasą z wartością początkową = 0;
Następnie inkrementujemy tę zmienną statyczną w konstruktorze klasy.
Spójrzmy na przykładowy program.
#include #include using namespace std; class sample{ int var; static int count; public: sample(int var):var(var){ cout<<'Count = '< Wynik:
Liczba = 0
Liczba = 1
Liczba = 2
W funkcji głównej tworzymy trzy różne obiekty. W danych wyjściowych widzimy, że wartość zmiennej statycznej jest utrzymywana między utworzeniami obiektów i nie jest resetowana przy każdym utworzeniu obiektu. Dla pierwszego obiektu liczba = 0. Następnie jest zwiększana do 1. Dla następnego obiektu liczba = 1 i tak dalej.
Gdyby liczba była zwykłą zmienną, wynik wyglądałby tak:
Liczba = 0
Liczba = 0
Liczba = 0
Statyczne obiekty klasowe
Podobnie jak statyczne zmienne składowe klasy, możemy zadeklarować obiekty klas jako statyczne. Obiekty klas statycznych są również inicjowane tylko raz i pozostają aktywne przez cały program. Ponieważ obiekt jest typem zdefiniowanym przez użytkownika, obiekt klasy statycznej jest inicjowany podobnie jak zwykłe obiekty przy użyciu konstruktora.
Weźmy przykład programowania, aby lepiej zrozumieć statyczne obiekty klas.
#include using namespace std; class xyz { int i; public: xyz() { i=0; cout << 'Constructor::xyz'<W tym programie mamy klasę xyz z konstruktorem i destruktorem. W funkcji głównej deklarujemy zmienną x = 0; Jeśli x jest równe zero, tworzymy obiekt statyczny klasy xyz.
Program daje następujące wyniki.
Wynik:
Konstruktor :: xyz
End Main
Niszczyciel :: xyz
Normalnie wynik powinien być
Konstruktor :: xyz
Niszczyciel :: xyz
End Main
Ale ponieważ tworzymy obiekt statyczny, ten obiekt ma zasięg do końca programu, a nie wtedy, gdy obiekt wychodzi poza zakres (instrukcja koniec if). To jest powód, dla którego destruktor obiektu obj jest wykonywany dopiero po osiągnięciu końca funkcji głównej.
Metody statyczne w klasie A.
Możemy również mieć metody statyczne w klasie. Podobnie jak statyczne obiekty i statyczne zmienne składowe, statyczne funkcje składowe mają również zakres do zakończenia wykonywania programu.
Gdy metoda klasy jest zadeklarowana jako statyczna, może uzyskać dostęp tylko do statycznych elementów członkowskich, tj. Zmiennych statycznych i funkcji statycznych klasy. Nie ma dostępu do zwykłych członków klasy.
Algorytm apriori w data mining na przykładzie
Nie ma również wskaźnika „this” dostępnego dla metod klas statycznych.
strony z anime, na których można oglądać anime
Możemy używać obiektu i operatora kropki w celu uzyskania dostępu do metod statycznych klasy, ale zalecamy użycie nazwy klasy i operatora rozpoznawania zakresu, aby uzyskać dostęp do tych metod.
Poniżej znajduje się przykład użycia metody statycznej w klasie.
W tym przykładzie zdefiniowaliśmy dwie statyczne zmienne składowe A i B oraz statyczną metodę printValues. Zmienne A i B są inicjalizowane odpowiednio do wartości 10 i 20. W metodzie statycznej printValues wartości A i B podlegają odpowiednio postInkrementacja i preInkrementacja. Następnie wartości są drukowane.
W metodzie głównej bezpośrednio wywołujemy statyczną metodę printValues, używając nazwy klasy, ponieważ nie potrzebujemy żadnego obiektu do wywołania funkcji statycznych.
#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; }
Wynik:
Wartość A: 11
Wartość B: 21
Zrzut ekranu tego samego wyjścia znajduje się poniżej.

Tak więc w danych wyjściowych widzimy, że wartości obu zmiennych statycznych są zmieniane zgodnie z wykonywanymi na nich operacjami.
Cel funkcji statycznych
Po zapoznaniu się z różnymi zastosowaniami słowa kluczowego static w tym samouczku, pozostaje pytanie, jaki jest cel funkcji statycznych.
Cel funkcji statycznych można podsumować w następujący sposób:
- Używamy funkcji statycznych, gdy funkcja ta nie zależy od obiektu do wywołania i działania.
- Jeszcze innym celem używania funkcji statycznej jest ograniczenie jej użycia. W przeciwieństwie do funkcji globalnych, dostęp do funkcji statycznych jest ograniczony do pliku, w którym się znajdują. Dlatego, aby ograniczyć dostęp do funkcji, nadamy jej statyczność.
- Oprócz dwóch powyższych powodów, używamy funkcji statycznych, gdy nie chcemy tworzyć obiektu klasy tylko po to, aby wykonać funkcję, która nie odwołuje się do żadnych składowych klasy.
Wniosek
Podsumowując ten temat, możemy powiedzieć, że słowo kluczowe static w C ++ może być używane na różne sposoby do deklarowania zmiennych, zmiennych składowych, obiektów klas, metod itp.
Statyczne funkcje i zmienne składowe nie muszą być dostępne za pomocą obiektu, raczej można uzyskać do nich bezpośredni dostęp za pomocą nazwy klasy. Ponadto zakres jednostek statycznych pozostaje przez cały czas wykonywania programu. Stąd słowo kluczowe static może być również używane do kontrolowania dostępu do określonej jednostki.
W naszych nadchodzących samouczkach dowiemy się więcej o kilku innych tematach OOP w C ++.
=> Sprawdź tutaj, aby zobaczyć samouczki szkoleniowe od A do Z języka C ++ tutaj.
rekomendowane lektury
- Mockowanie metod prywatnych, statycznych i Void przy użyciu Mockito
- Testowanie statyczne i testowanie dynamiczne - różnica między tymi dwoma ważnymi technikami testowania
- 40 najlepszych narzędzi do statycznej analizy kodu (najlepsze narzędzia do analizy kodu źródłowego)
- Najlepsza DARMOWA seria samouczków języka C #: najlepszy przewodnik po języku C # dla początkujących
- Parametryzacja wartości statycznych w LoadRunner
- Zmienne Pythona
- Rodzaje dziedziczenia w C ++
- Zmienne w C ++