7.1 Słowa kluczowe i nazwy

Nazwy (identyfikatory) są wprowadzane do jednostki kompilacji (pliku wraz z innymi plikami włączonymi za pomocą #include) poprzez deklaracje. Deklaracja określa własności i sposób interpretacji nazwy (zmiennej, funkcji, itd.). Zazwyczaj (choć, jak zobaczymy, nie zawsze) deklaracja wiąże się z definicją, czyli z przydziałem pamięci na nazwany obiekt. Obowiązuje przy tym „zasada jednej definicji.” (ang. one definition rule)

W jednostce kompilacji nie może być więcej niż jednej definicji tej samej zmiennej, funkcji, klasy, wyliczenia lub wzorca.

Zasada ta nie dotyczy jednak deklaracji, które mogą się powtarzać.

Język C++ definiuje pewne słowa kluczowe jako identyfikatory zarezerwowane: nie mogą pojawić się w innym znaczeniu niż nadane im w standardzie języka. W szczególności, nie mogą być użyte jako identyfikatory (nazwy) zmiennych, funkcji, klas czy przestrzeni nazw. Poniższa tabela przedstawia wszystkie 92 słowa kluczowe języka C++.

Tabela: Słowa kluczowe języka C++
alignas const_cast module static_cast
alignof continue mutable struct
and decltype namespace switch
and_eq default new synchronized
asm delete noexcept template
atomic_cancel do not this
atomic_commit double not_eq thread_local
atomic_noexcept dynamic_cast nullptr trrow
auto else operator true
bitand enum or try
bitor explicit or_eq typedef
bool export private typeid
break extern protected typename
case false public union
catch float register unsigned
char for reinterpret_cast using
char16_t friend requires virtual
char32_t goto return void
class if short volatile
compl import signed wchar_t
concept inline sizeof while
const int static xor
constexpr long static_assert xor_eq
       

Dodatkowo, cztery identyfikatory słowami kluczowymi, ale tylko, gdy użyte są w specyficznych kontekstach; są to override, final, transaction_safetransaction_safe_dynamic.

Legalne identyfikatory, inne niż podane tu słowa kluczowe, mogą w zasadzie zawierać dowolną liczbę znaków alfanumerycznych (liter i cyfr) oraz znaki podkreślenia. Formalnie niełacińskie znaki Unicode są dozwolone, ale może to powodować kłopoty i lepiej ich unikać. Tak jak w innych językach, pierwszy znak nazwy nie może być cyfrą. Nazwy zawierające gdziekolwiek dwa następujące po sobie znaki podkreślenia, albo rozpoczynające się od znaku podkreślenia po którym następuje duża litera są zastrzeżone i nie powinny być używane. W końcu, nazwy rozpoczynające się od znaku podkreślenia po którym nie następuje duża litera mogą być używane tylko w zakresie globalnym.

Litery duże i małe rozróżnialne; nazwa val_X jest inna niż np. nazwa val_x.

Przyjęło się, że nazwy zmiennych piszemy małymi literami, nazwy typów wielu programistów rozpoczyna od dużej litery, a nazwy stałych zdefiniowanych przez dyrektywę preprocesora #define — samymi dużymi literami.

Jeśli nazwa składa się z kilku słów, to oddzielamy je znakami podkreślenia (numer_klienta) lub każde słowo, z wyjątkiem, być może, pierwszego, rozpoczynamy od litery dużej (nazwaPliku) — jest to tzw. notacja „wielbłądzia” (ang. CamelCase).

T.R. Werner, 23 lutego 2019; 23:59