alignas | continue | friend | register | true |
alignof | decltype | goto | reinterpret_cast | try |
asm | default | if | return | typedef |
auto | delete | inline | short | typeid |
bool | do | int | signed | typename |
break | double | long | sizeof | union |
case | dynamic_cast | mutable | static | unsigned |
catch | else | namespace | static_assert | using |
char | enum | new | static_cast | virtual |
char16_t | explicit | noexcept | struct | void |
char32_t | export | nullptr | switch | volatile |
class | extern | operator | template | wchar_t |
const | false | private | this | while |
constexpr | float | protected | thread_local | |
const_cast | for | public | throw |
Таблица 2.4. Альтернативные имена операторов языка С++
and | bitand | compl | not_eq | or_eq | xor_eq |
and_eq | bitor | not | or | xor |
Кроме ключевых слов, стандарт резервирует также набор идентификаторов для использования в библиотеке, поэтому пользовательские идентификаторы не могут содержать два последовательных символа подчеркивания, а также начинаться с символа подчеркивания, непосредственно за которым следует прописная буква. Кроме того, идентификаторы, определенные вне функций, не могут начинаться с символа подчеркивания.
Существует множество общепринятых соглашений для именования переменных. Применение подобных соглашений может существенно улучшать удобочитаемость кода.
• Идентификатор должен быть осмысленным.
• Имена переменных обычно состоят из строчных символов. Например, index
, а не Index
или INDEX
.
• Имена классов обычно начинаются с прописной буквы, например Sales_item
.
• Несколько слов в идентификаторе разделяют либо символом подчеркивания, либо прописными буквами в первых символах каждого слова. Например: student_loan
или studentLoan
, но не studentloan
.
Упражнение 2.12. Какие из приведенных ниже имен недопустимы (если таковые есть)?
(a) int double = 3.14; (b) int _;
(с) int catch-22; (d) int 1_or_2 = 1;
(e) double Double = 3.14;
2.2.4. Область видимости имен
В любом месте программы каждое используемое имя относится к вполне определенной сущности — переменной, функции, типу и т.д. Однако имя может быть использовано многократно для обращения к различным сущностям в разных точках программы.
В разных областях видимости то же имя может относиться к разным сущностям. Имена видимы от момента их объявления и до конца области видимости, в которой они объявлены.
В качестве примера рассмотрим программу из раздела 1.4.2:
#include
int main() {
int sum = 0;
//
for (int val = 1; val <= 10; ++val)
sum += val; //
std::cout << "Sum of 1 to 10 inclusive is "
<< sum << std::endl;
return 0;
}
Эта программа определяет три имени — main
, sum
и val
, а также использует имя пространства имен std
, наряду с двумя именами из этого пространства имен — cout
и endl
.
Имя main
определено вне фигурных скобок. Оно, как и большинство имен, определенных вне функции, имеет sum
определено в пределах блока, которым является тело функции main()
. Оно доступно от момента объявления и далее в остальной части функции main()
, но не за ее пределами. Переменная sum
имеет val
определяется в пределах оператора for
. Оно применимо только в этом операторе, но не в другом месте функции main()
.