Какие ключевые слова есть в C++ и можно ли использовать их как имена переменных?
Перешёл на C++ после Python, пишу первые программки. Заметил, что часть слов компилятор не даёт использовать как имена переменных — например, попробовал так:
int class = 5;
int new = 10;
и получил кучу ошибок. Понимаю, что это зарезервированные слова, но хочется системно: какие вообще бывают ключевые слова c++ и зачем их столько? Есть полный список или хотя бы основные группы?
2 ответа
Да, class и new — это зарезервированные слова, их нельзя использовать как идентификаторы, поэтому компилятор и ругается.
Ключевых слов в C++ около 90 штук, но запоминать весь список наизусть не нужно. Удобнее держать в голове группы:
- Типы данных:
int,double,float,char,bool,void,long,short,unsigned,auto - Управление потоком:
if,else,for,while,do,switch,case,break,continue,return,goto - ООП:
class,struct,public,private,protected,virtual,this,new,delete,operator,friend - Модификаторы:
const,static,constexpr,inline,volatile,mutable - Прочее:
namespace,using,template,typename,sizeof,nullptr,true,false,enum,union,try,catch,throw
Пример корректного кода:
#include <iostream>
using namespace std;
int main() {
const int n = 5; // const, int — ключевые слова
for (int i = 0; i < n; i++) { // for, int
cout << i << " ";
}
return 0; // return
}
Просто не называйте переменные так же, как ключевые слова, и всё. Если очень хочется — добавьте суффикс: class_, new_value.
Маленькое дополнение: список ключевых слов растёт от стандарта к стандарту. В C++11 добавились nullptr, constexpr, auto (в новом смысле), decltype, в C++20 — concept, requires, co_await и т.д.
Поэтому код, который компилировался лет 15 назад, иногда ломается на новом компиляторе: переменная concept раньше была валидной, а теперь это ключевое слово.