Zmienna statyczna C ++

Zmienna statyczna C ++
„STATIC jest słowem kluczowym lub modyfikatorem w C ++, które odnosi się do typu, a nie instancji. Dlatego dostęp do członków statycznych nie wymaga instancji. Pola, metody, konstruktory, klasy, właściwości, operatorzy i zdarzenia mogą być statyczne w C++. Oszczędza pamięć, ponieważ nie musimy już budować instancji, aby uzyskać dostęp do członków statycznych. Dodatkowo, ponieważ jest członkiem tego typu, jego instancja nie będzie tworzona za każdym razem, gdy pamięć jest używana. W tym artykule przedstawiono różne przykłady różnych sposobów stosowania statycznego w C ++. Metody wykorzystania statycznego w C ++ są tutaj szczegółowe. Pokazują, jak funkcjonują różne metody i jak można je stosować na różne sposoby."

Przykład 1

Sprawdźmy ten pierwszy przypadek zmiennej statycznej w C++.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
void my_demo ()

static int count_val = 0;
Cout<count_val ++;

int main ()

dla (int i = 0; i<4; i++)
My_demo ();
powrót 0;

W ramach funkcji „my_demo” utworzyliśmy zmienną statyczną „Count_val”, wykorzystując słowo kluczowe statyczne i ustawiając go z wartością zero. Następnie liczba_val jest zwiększana do następnego wywołania funkcji. Następnie mamy główną funkcję, w której mamy pętlę do iteracji i wywołuje funkcję „my_demo”.

Wynik powyższego skryptu zmiennej statycznej jest następujący:

Przykład 2

Zmienne statyczne w klasie są dostępne przez obiekty, ponieważ są przypisane miejsce w oddzielnym magazynie statycznym, co oznacza, że ​​zmienne oznaczone jako statyczne są inicjowane tylko raz. Tych samych zmiennych statycznych nie można używać więcej niż raz dla różnych obiektów. Dodatkowo, konstruktorzy nie mogą inicjować zmiennych statycznych. W rezultacie użytkownik potrzebuje ręcznie inicjowania zmiennych statycznych wewnątrz klas za pomocą nazwy klasy i operatora rozdzielczości zakresu poza klasą, jak pokazano poniżej:

#włączać
za pomocą przestrzeni nazw Std;
klasa myclass

publiczny:
statyczny int x;
Moja klasa()

// puste ciało
;
;
int myClass :: x = 2;
int main ()

MyClassobj;
Cout<

Ustanowiliśmy klasę „MyClass”, która jest publiczna. Następnie zdefiniowaliśmy zmienną statyczną „x”. Następnie stworzyliśmy konstruktor klasy „MyClass”, który nic nie robi ze względu na jego puste ciało. Poza klasą wyraźnie zainicjowaliśmy zmienną statyczną „X” z rozdzielczością zakresu „::”. Następnie, wewnątrz Int Main, ogłosiliśmy obiekt „OBJ”, wywołując „myclass” i drukując jego wartość.

Wartość statycznej zmiennej x Zestaw w powyższym skrypcie jest wyświetlana poniżej.

Przykład 3

Jak widać z powyższego programu, staraliśmy się stworzyć kilka duplikatów zmiennej statycznej dla różnych obiektów. Ale to nie miało miejsca.

#włączać
za pomocą przestrzeni nazw Std;
klasa myClass2

int a;
publiczny:
MyClass2 ()

a = 0;
Cout<< " Constructor Body\n";

~ MyClass2 ()

Cout<< "Destructor Body\n";

;
int main ()

int b = 0;
if (b == 0)

MyClass2 obj;

Cout<< "Main Terminated\n";

Ustanowiliśmy klasę „MyClass2” i ogłosiliśmy obiekt jako „A”. Następnie zdefiniowaliśmy konstruktor „MyClass2”, który inicjuje obiekt „A” o wartości zerowej. Ponadto, będzie ono przekształcić „ciało konstruktora”. Ponadto zbudowaliśmy destruktor klasy „MyClass2”, który tylko drukuje stwierdzenie „Ciało destruktora”. Następnie utworzyliśmy funkcję INT, która definiuje i inicjuje inny obiekt jako „B” ustawiony jako zero. Mamy również instrukcję IF, która ma warunek, że obiekt „B” jest równy wartości zero, a następnie definiuje obiekt konstruktor MyClass2 jako „OBJ”. Ostatecznie nazwieliśmy polecenie Cout, które wydrukuje przesłanie głównego zakończenia.

Następujący wynik jest wydrukowany na podpowiedzi.

Przykład 4

Obiekt jest oznaczony jako nietatyczny we wspomnianym programie IF Block. Dlatego zakres zmiennej jest ograniczony do bloku IF. W rezultacie konstruktor funkcji jest wywoływany po utworzeniu obiektu, a destruktor jest wywoływany, gdy tylko kontrola bloku nie obowiązuje, ponieważ zakres obiektu jest ograniczony do bloku IF, gdzie jest zadeklarowany. Teraz zbadajmy, jak zmienią się wyjście, jeśli ogłosimy, że obiekt jest statyczny.

#włączać
za pomocą przestrzeni nazw Std;
klasa myClass3

int x = 0;
publiczny:
MyClass3 ()

x = 0;
Cout<< "Constructor Section\n";

~ MyClass3 ()

Cout<< "Destructor Section\n";

;
int main ()

int y = 0;
if (y == 0)

statyczny myclass3 obj;

Cout<< "Main Ended\n";


Stworzyliśmy klasę „myClas3” jak w powyższym programie. Następnie zdefiniowaliśmy zmienną x i przypisaliśmy jej wartość zero. Konstruktor i destruktor są również ustanowione w klasie „MyClass3”. W ramach głównego, choć warunkowego stwierdzenia, zadeklarowaliśmy statyczny obiekt „myClass3”.

Zmiana wydajności jest oczywista. Ponieważ destruktor jest wywoływany na kolejnym szybkim ekranie po głównym, miało to miejsce w wyniku życia programu objętych obiektami statycznymi.

Przykład 5

Istnienie statycznych funkcji członka w klasie jest niezależne od dowolnego obiektu klasy, podobnie jak statyczne elementy danych lub zmienne statyczne. W przeciwieństwie do nietatycznych elementów danych i funkcji członków klasy, funkcje statyczne są dozwolone tylko dostęp do innych funkcji statycznych członków lub innych statycznych elementów danych.

#włączać
za pomocą przestrzeni nazw Std;
klasa new_class

publiczny:
static void display_msg ()

Cout<<"Welcome to my portal";

;
int main ()

New_class :: display_msg ();

Klasa „nowa_class” ma publiczny modyfikator, który definiuje funkcję statycznego elementu Void jako „display_msg”. Wewnątrz statycznej funkcji członka „Display_msg” wydrukowaliśmy instrukcję Cout. Poza „new_class” mamy główną metodę programu, w której wywołaliśmy funkcję statycznego członka „display_msg”.

Wyjście drukuje komunikat w funkcji statycznej elementu „Display_msg” w następujący sposób:

Wniosek

Nasze zrozumienie statycznego pomysłu w C ++ może opierać się na wyżej wymienionym artykule. W statycznym miejscu przechowywania elementy statyczne są kiedykolwiek przydzielane tylko raz podczas programu. Ponadto są one ważne przez cały okres programu. Ten przewodnik omawia różne techniki statyczne użytkowania wraz z przykładami działającymi. Korzystanie z koncepcji zgodnie z potrzebami programisty będzie łatwiejsze za pomocą przykładów.