কীওয়ার্ড হলো সেসব শব্দ যাদের অর্থ কম্পাইলার দ্বারা ইতিমধ্যে ডিফাইন করা থাকে। এই কীওয়ার্ডগুলো আইডেন্টিফায়ার হিসেবে ব্যবহার করা যায় না। মনে রাখবেন কীওয়ার্ডগুলো রিজার্ভড ওয়ার্ড এবং প্রিডিফাইনড আইডেন্টিফায়ারের সমষ্টি। প্রিডিফাইনড আইডেন্টিফায়ার হলো সেসব আইডেন্টিফায়ার যা কম্পাইলার দ্বারা ডিফাইন করা থাকে কিন্তু ইউজার তার অর্থ পরিবর্তন করতে পারে।
উদাহরণস্বরূপ, আপনি আপনার মেইন ফাংশনের ভিতরে main নামক একটি ভেরিয়েবল ডিক্লেয়ার করতে পারেন, সেটি ইনিশিয়ালাইজ করতে পারেন, এবং তার মান প্রিন্ট করতে পারেন (কিন্তু শুধু এটি ভেরিফাই করার জন্য যে আপনি পারেন!)। অন্যদিকে, আপনি else নামক একটি ভেরিয়েবল দিয়ে এটা করতে পারবেন না। পার্থক্য হলো else একটি রিজার্ভড ওয়ার্ড, যখন main "শুধু" একটি প্রিডিফাইনড আইডেন্টিফায়ার।
C++-এ মোট ৯৫টি রিজার্ভড ওয়ার্ড রয়েছে। C++-এর রিজার্ভড ওয়ার্ডগুলো সুবিধার জন্য অনেক গ্রুপে ভাগ করা যেতে পারে। প্রথম গ্রুপে সেসব রাখা হয়েছে যা C প্রোগ্রামিং ল্যাঙ্গুয়েজেও ছিল এবং C++-এ আনে দেওয়া হয়েছে। এগুলো ৩২টি।
আর ৩০টি রিজার্ভড ওয়ার্ড আছে যা C-তে ছিল না, তাই এগুলো C++ প্রোগ্রামিং ল্যাঙ্গুয়েজের জন্য নতুন।
১১টি C++ রিজার্ভড ওয়ার্ড আছে যা স্ট্যান্ডার্ড ASCII ক্যারেক্টার সেট ব্যবহার করার সময় অপরিহার্য নয়, কিন্তু এগুলো কিছু C++ অপারেটরের আরও পঠনযোগ্য বিকল্প দেওয়ার জন্য এবং যেসব ক্যারেক্টার সেটে C++-র জন্য প্রয়োজনীয় ক্যারেক্টার থাকে না সেসব ক্যারেক্টার সেটে প্রোগ্রামিং সুবিধার্থে যোগ করা হয়েছে।
নিচে এই সব রিজার্ভড ওয়ার্ডের তালিকা দেওয়া হলো:
| alignas (since C++11) | double | reinterpret_cast |
| alignof (since C++11) | dynamic_cast | requires (since C++20) |
| and | else | return |
| and_eq | enum | short |
| asm | explicit | signed |
| atomic_cancel (TM TS) | export(1) | sizeof(1) |
| atomic_commit (TM TS) | extern(1) | static |
| atomic_noexcept (TM TS) | false | static_assert (since C++11) |
| auto(1) | float | static_cast |
| bitand | for | struct(1) |
| bitor | friend | switch |
| bool | goto | synchronized (TM TS) |
| break | if | template |
| case | import (modules TS) | this |
| catch | inline(1) | thread_local (since C++11) |
| char | int | throw |
| char16_t (since C++11) | long | true |
| char32_t (since C++11) | module (modules TS) | try |
| class(1) | mutable(1) | typedef |
| compl | namespace | typeid |
| concept (since C++20) | new | typename |
| const | noexcept (since C++11) | union |
| constexpr (since C++11) | not | unsigned |
| const_cast | not_eq | using(1) |
| continue | nullptr (since C++11) | virtual |
| co_await (coroutines TS) | operator | void |
| co_return (coroutines TS) | or | volatile |
| co_yield (coroutines TS) | or_eq | wchar_t |
| decltype (since C++11) | private | while |
| default(1) | protected | xor |
| delete(1) | public | xor_eq |
| do | register(2) |