คำหลักคือคำที่คอมไพเลอร์กำหนดความหมายแล้ว ไม่สามารถใช้คีย์เวิร์ดเหล่านี้เป็นตัวระบุได้ โปรดทราบว่าคำหลักคือชุดของคำสงวนและตัวระบุที่กำหนดไว้ล่วงหน้า ตัวระบุที่กำหนดไว้ล่วงหน้าคือตัวระบุที่กำหนดโดยคอมไพเลอร์ แต่ผู้ใช้สามารถเปลี่ยนความหมายได้
ตัวอย่างเช่น คุณสามารถประกาศตัวแปรที่เรียกว่า main ภายในฟังก์ชันหลักของคุณ เริ่มต้นมัน แล้วพิมพ์ค่าของมันออกมา (แต่ทำอย่างนั้นเพื่อยืนยันว่าคุณทำได้เท่านั้น!) ในทางกลับกัน คุณไม่สามารถทำเช่นนี้กับตัวแปรชื่ออื่นได้ ความแตกต่างคือ อย่างอื่นเป็นคำสงวน ในขณะที่หลักคือ "เท่านั้น" ตัวระบุที่กำหนดไว้ล่วงหน้า
มีคำสงวนไว้ทั้งหมด 95 คำในภาษา C++ คำที่สงวนไว้ของ C ++ อาจถูกจัดวางเป็นกลุ่มต่างๆ อย่างสะดวก ในกลุ่มแรก เราใส่สิ่งที่มีอยู่ในภาษาการเขียนโปรแกรม C และส่งต่อไปยัง C++ มีทั้งหมด 32 รายการ
มีคำสงวนอีก 30 คำที่ไม่ได้อยู่ใน C ดังนั้นจึงเป็นคำใหม่สำหรับการเขียนโปรแกรม C++
มีคำสงวน C++ จำนวน 11 คำที่ไม่จำเป็นเมื่อใช้ชุดอักขระ ASCII มาตรฐาน แต่ได้มีการเพิ่มคำเหล่านี้เพื่อเป็นทางเลือกที่อ่านได้สำหรับโอเปอเรเตอร์ C++ บางตัว และยังอำนวยความสะดวกในการเขียนโปรแกรมด้วย ชุดอักขระที่ไม่มีอักขระที่จำเป็นสำหรับ C++
นี่คือรายการคำสงวนทั้งหมดเหล่านี้:
| alignas (ตั้งแต่ C++11) | double | reinterpret_cast |
| alignof (ตั้งแต่ C++11) | dynamic_cast | ต้องการ (ตั้งแต่ C++20) |
| และ | else | return |
| and_eq | enum | short |
| asm | ชัดเจน | signed |
| atomic_cancel (TM TS) | ส่งออก(1) | ขนาด(1) |
| atomic_commit (TM TS) | extern(1) | static |
| atomic_noexcept (TM TS) | เท็จ | static_assert (ตั้งแต่ C++11) |
| อัตโนมัติ(1) | float | static_cast |
| bitand | สำหรับ | struct(1) |
| bitor | เพื่อน | สวิตช์ |
| bool | goto | ซิงโครไนซ์ (TM TS) |
| break | if | เทมเพลต |
| case | นำเข้า (โมดูล TS) | นี่ |
| จับ | inline(1) | thread_local (ตั้งแต่ C++11) |
| ถ่าน | int | โยน |
| char16_t (ตั้งแต่ C++11) | ยาว | จริง |
| char32_t (ตั้งแต่ C++11) | โมดูล (โมดูล TS) | ลอง |
| คลาส(1) | เปลี่ยนแปลงได้(1) | typedef |
| compl | เนมสเปซ | typeid |
| แนวคิด (ตั้งแต่ C++20) | ใหม่ | พิมพ์ชื่อ |
| const | ไม่มีข้อยกเว้น (ตั้งแต่ C++11) | union |
| constexpr (ตั้งแต่ C++11) | ไม่ | unsigned |
| const_cast | not_eq | using(1) |
| ดำเนินการต่อ | nullptr (ตั้งแต่ C++11) | virtual |
| co_await (coroutines TS) | ตัวดำเนินการ | void |
| co_return (coroutines TS) | หรือ | ระเหย |
| co_yield (coroutines TS) | or_eq | wchar_t |
| decltype (ตั้งแต่ C++11) | ส่วนตัว | ในขณะที่ |
| ค่าเริ่มต้น(1) | มีการป้องกัน | xor |
| ลบ(1) | public | xor_eq |
| ทำ | register(2) | |