Từ khóa (keywords) là những từ có ý nghĩa đã được định nghĩa sẵn bởi trình biên dịch. Các từ khóa này không thể dùng làm định danh. Lưu ý rằng từ khóa là tập hợp của các từ dành riêng (reserved words) và định danh được định nghĩa sẵn (predefined identifiers). Định danh được định nghĩa sẵn là những định danh do trình biên dịch định nghĩa nhưng có thể thay đổi ý nghĩa bởi người dùng.
Ví dụ, bạn có thể khai báo biến tên main bên trong hàm main, khởi tạo nó, rồi in ra giá trị (chỉ làm vậy để kiểm tra!). Nhưng bạn không thể làm vậy với biến tên else. Sự khác biệt là else là từ dành riêng, trong khi main "chỉ" là định danh được định nghĩa sẵn.
Tổng cộng có 95 từ dành riêng trong C++. Các từ dành riêng của C++ có thể phân nhóm thành vài nhóm. Nhóm đầu tiên gồm các từ cũng có trong C và được kế thừa sang C++. Có 32 từ như vậy.
Có 30 từ dành riêng khác không có trong C, do đó là mới trong C++.
Có 11 từ dành riêng C++ không bắt buộc khi dùng bộ ký tự ASCII chuẩn, nhưng được thêm vào để cung cấp các lựa chọn dễ đọc hơn cho một số toán tử, và hỗ trợ lập trình với các bộ ký tự thiếu ký tự cần thiết cho C++.
Dưới đây là danh sách tất cả các từ dành riêng:
| Từ khóa | Từ khóa | Từ khóa |
|---|---|---|
| alignas (C++11) | double | reinterpret_cast |
| alignof (C++11) | dynamic_cast | requires (C++20) |
| and | else | return |
| and_eq | enum | short |
| asm | explicit | signed |
| atomic_cancel (TM TS) | export | sizeof |
| atomic_commit (TM TS) | extern | static |
| atomic_noexcept (TM TS) | false | static_assert (C++11) |
| auto | float | static_cast |
| bitand | for | struct |
| bitor | friend | switch |
| bool | goto | synchronized (TM TS) |
| break | if | template |
| case | import (modules TS) | this |
| catch | inline | thread_local (C++11) |
| char | int | throw |
| char16_t (C++11) | long | true |
| char32_t (C++11) | module (modules TS) | try |
| class | mutable | typedef |
| compl | namespace | typeid |
| concept (C++20) | new | typename |
| const | noexcept (C++11) | union |
| constexpr (C++11) | not | unsigned |
| const_cast | not_eq | using |
| continue | nullptr (C++11) | virtual |
| co_await (coroutines TS) | operator | void |
| co_return (coroutines TS) | or | volatile |
| co_yield (coroutines TS) | or_eq | wchar_t |
| decltype (C++11) | private | while |
| default | protected | xor |
| delete | public | xor_eq |
| do | register |