C++ 关键字

观察一段简单的 C++ 代码,比如 int age = 20; 或 const int maxCount = 10;,我们会发现除了 20、10 这些具体数字之外,代码里还有很多英文单词。

这些英文单词主要分为两类。第一类是 C++ 语言预先占用的单词,叫做 “关键字”,比如 int、const。第二类是我们自己给数据或模块起的名字,叫做标识符,比如 age、maxCount。这一节我们先来认识 C++ 的关键字。

C++ 关键字是什么?

在 C++ 中,关键字(也叫 “保留字”)指的是 C++ 语言本身 “已经在使用” 的单词,每一个关键字都有特定的语法作用。比如用来指定类型的 int、用来定义常量的 const,以及后面会陆续学到的 if、for、return、class 等,都属于 C++ 关键字。

这些单词为什么特殊呢?因为编译器看到它们时,会直接按照固定好的语法规则去解析。简单来说,这些名字已经被 C++ 官方占用了,因为 C++ 自己要用,所以我们在给变量、常量或函数起名字时,就不能再使用这些关键字了。

现代 C++ 一共包含 90 多个关键字,其中表示真和假的 true 与 false 也属于关键字。初学阶段最常遇到的 30 个关键字如下表所示。

C++ 常见关键字
auto bool break case char
class const continue default do
double else false float for
if int long namespace return
short sizeof static_cast struct switch
true unsigned using void while

这里列举常见关键字只是方便小伙伴们平时查询,并不是叫大家死记硬背。等我们把后面的课程学完之后,这些关键字自然而然就会认得了。

为了方便建立直观印象,我们可以按用途把常见关键字大致分为以下 3 类:

  • 数据类型相关:用来声明各种数据类型,如 int、double、char、bool、unsigned 等。
  • 流程控制相关:用来进行条件判断和循环控制,如 if、else、switch、for、while、break 等。
  • 结构与操作相关:用来限定属性、组织结构或执行特定操作,如 const、return、namespace、sizeof、class 等。

C++ 关键字的使用规则

在日常编写 C++ 代码时,对于关键字的使用,我们需要遵循以下 2 条规则:

  • 不能把关键字当成普通的变量名、常量名或函数名来使用。
  • C++ 所有的关键字全部由小写字母组成,严格区分大小写。

对于第一条规则,比如在表示 “班级编号” 时,不少初学者会下意识地把变量名起成 class,结果一编译就会报错。下面我们来看一个例子。

示例 1:关键字不能作变量名

#include <iostream>

int main() {
    int class = 1001;
    std::cout << class;
    return 0;
}

运行结果如下。

(报错)error: expected unqualified-id before 'class'

分析:

int class = 1001; 尝试使用 class 作为整型变量的名字。由于 class 是 C++ 专门用来定义 “类” 的关键字,编译器无法把它当成普通名称处理,于是直接报错,提示在 class 前缺少合法的变量名。

如果在实际开发中确实需要表达 “班级” 或 “返回值” 这类含义,只需要在后面加上其他单词组合成新名字,避开关键字本身就可以了,比如将变量名起为 classId 或 returnValue。

提示 在 VSCode 等代码编辑器中,合法的 C++ 关键字通常会显示为专门的高亮颜色。如果我们不小心把关键字写成了变量名,编辑器往往也会在代码下方标出红色波浪线提前提醒。

对于第二条规则,有些小伙伴敲代码时受英文打字习惯影响,容易把 int 敲成 Int,或者受 Python 习惯影响把布尔值 true 敲成首字母大写的 True,这在 C++ 中都会导致编译失败。请看下面例子。

示例 2:关键字误写为大写

#include <iostream>

int main() {
    Int year = 2026;
    std::cout << year;
    return 0;
}

运行结果如下。

(报错)error: 'Int' was not declared in this scope

分析:

在这个例子中,我们将关键字 int 的首字母写成了大写。在 C++ 编译器眼里,只有全小写的 int 才是表示整数类型的关键字,而首字母大写的 Int 只是一个陌生的名字。编译器发现前面并没有定义过 Int,就会报 “未在当前作用域中声明” 的错误。

因此平时写代码时要注意,书写任何 C++ 关键字都必须保持全部小写:

// 正确方式
int year = 2026;
bool passed = true;

// 错误方式
Int year = 2026;
bool passed = True;

常见问题

1. 代码里经常出现的 main、std 和 cout 也是 C++ 关键字吗?

很多初学者容易把每篇代码里都会见到的 main、std 和 cout 也当成关键字。实际上,它们并不是 C++ 关键字,而是具有特定用途的名称:

main:C++ 程序入口函数约定的固定名称,属于特殊的函数名,不是关键字。

std 和 cout:C++ 标准库中预先定义好的名称,其中 std 是标准库的命名空间,cout 是标准输出对象,它们同样不属于语言内置的关键字。

虽然 main、std 和 cout 在语法分类上不是关键字,但它们在每个 C++ 程序中都有固定的重要用途。因此我们在自己定义变量或常量时,同样不要去跟它们重名。

上一篇:

下一篇:

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号