Latest web development tutorials

C ++ klasa przechowywania

Klasa składowania definiuje zmienne programu C ++ / zakres funkcji (widoczność) oraz cyklu życia. Te Specyfikatory umieszczone przed ich zmienić typ. Poniżej wymienione są programy magazynowe klasy C ++ są dostępne:

  • automatyczny
  • zarejestrować
  • statyczny
  • zewnętrzny
  • zmienny

klasa przechowywania auto

klasa przechowywaniaauto to wszystkie lokalne zmienne klasy domyślny przechowywania.

{
   int mount;
   auto int month;
}

Powyższy przykład definiuje dwie zmienne o tej samej klasie pamięci, auto może być używany tylko wewnątrz funkcji, a mianowicie auto modyfikuje tylko zmiennej lokalnej.

zarejestruj klasie pamięci

zarejestruj storage class służy do definiowania przechowywane w rejestrach zamiast RAM w zmiennych lokalnych.Oznacza to, że maksymalna wielkość zmiennej jest równa wielkości rejestru (zwykle słów), i nie może być przyłożona do niego jednoargumentowy '&' operatora (ponieważ nie ma miejsca w pamięci).

{
   register int  miles;
}

Potrzebujesz zarejestrować się tylko do szybkiego dostępu do zmiennych, takich jak licznik. Należy również zauważyć, że określenie "rejestr" nie oznacza, że ​​zmienna jest przechowywana w rejestrze, oznacza to, że wartość zmiennej może być przechowywana w rejestrze, w zależności od ograniczeń sprzętu i realizacji.

static storage class

static storage class instruuje kompilator, aby utrzymać istnienie zmiennych lokalnych w cyklu życia programu, bez konieczności wprowadzania go za każdym razem, gdy wychodzi z zakresu i być tworzone i niszczone.W związku z tym, zastosowanie statycznych zmienne lokalne mogą być modyfikowane w celu utrzymania wartości zmienne lokalne połączenia między funkcyjnych.

Modyfikator statyczne mogą być stosowane do zmiennych globalnych. Gdy zmodyfikowany statyczną zmienną globalną, zmienna będzie ograniczać zakresu rachunku w swoich aktach.

W C ++, kiedy jest stosowany na statycznych pól klasy, wszystkie obiekty będą prowadzić tylko w jednym egzemplarzu klasy członkowie są wspólne.

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

extern storage class

extern storage class służy do zapewnienia odniesienia do zmiennej globalnej, zmienna globalna dla wszystkich plików programu są widoczne.Podczas korzystania z 'extern', którzy nie mogą zainicjować zmienną nazwa zmienna będzie wskazywać na wcześniej określonym miejscu składowania.

Gdy masz kilka dokumentów i zdefiniować zmienną globalną lub funkcji, które mogą być używane w innych dokumentach, można użyćexternw innych plikach, aby odwoływać się do zmiennej lub funkcji zdefiniowane. Można jerozumieć,extern służy do deklarowania zmiennej globalnej lub funkcji w innym pliku.

extern modyfikator jest zwykle używany, gdy istnieją dwie lub więcej plików z tych samych zmiennych globalnych lub funkcji czasu, co następuje:

Pierwszy plik: main.cpp

#include <iostream>
 
int count ;
extern void write_extern();
 
int main()
{
   count = 5;
   write_extern();
}

Drugi plik: support.cpp

#include <iostream>
 
extern int count;
 
void write_extern(void)
{
   std::cout << "Count is " << count << std::endl;
}

Oto druga kluczoweexternplik służy do deklarowania pierwszy licznik został zdefiniowany w pliku w main.cpp. Teraz oba pliki kompilacji, co następuje:

$ g++ main.cpp support.cpp -o write

Generuje tonapisać program wykonywalny próbuje wykonać zapisu,będzie produkować następujące wyniki:

$ ./write
Count is 5

zmienne storage class

zmienne specifier odnosi się tylko do klas obiektów, które będą pod koniec tego kursu do wytłumaczenia.Pozwala członków stałych zastępczych obiektów. Oznacza to, że zmienne członek może być modyfikowana przez const funkcji składowych.