Specyfikatory statycznych klas magazynowania
Statyczne modyfikatory klasy magazynowej static i extern, mogą być stosowane do obiektów i funkcji.W poniższej tabeli pokazano, gdzie słowa kluczowe static i extern mogą i nie mogą być używane.
Użycie static i extern
Konstruktor |
Czy można używać static? |
Czy można używać extern? |
---|---|---|
Deklaracje funkcji w bloku |
Nie |
Tak |
Argumenty formalne do funkcji |
Nie |
Nie |
Obiekty w bloku |
Tak |
Tak |
Obiekty poza blokiem |
Tak |
Tak |
Funkcje |
Tak |
Tak |
Funkcje składowe klasy |
Tak |
Nie |
Dane elementu członkowskiego klasy |
Tak |
Nie |
nazwy typedef |
Nie |
Nie |
Nazwa określona za pomocą słowa kluczowego static ma wewnętrzne powiązania z wyjątkiem elementów statycznych klasy, które mają powiązania zewnętrzne.Oznacza to, że nie jest widoczna na zewnątrz bieżącej jednostki tłumaczenia.Nazwa określona za pomocą słowa kluczowego extern ma zewnętrzne powiązania, chyba że została uprzednio zdefiniowana jako posiadająca wewnętrzne powiązania.Aby uzyskać więcej informacji dotyczących widoczności nazw zobacz Scope i Program i powiązania.
[!UWAGA]
Funkcje, które zostały zadeklarowane jako inline i które nie są funkcjami składowymi klasy otrzymują te same właściwości powiązania co funkcje zadeklarowane jako static.
Nazwa klasy, której deklaracja nie została jeszcze napotkana przez kompilator może być używana w deklaracji extern.Nazwa wprowadzona za pomocą takiej deklaracji nie może być użyta dopóki nie zostanie napotkana deklaracja klasy.