标识符是一个由程序员定义的名称,代表程序的某些元素。变量名就是标识符的示例。只要不使用任何 C++ 关键字,程序员可以在 C++ 中选择自己的变量名。
C++ 中的关键字构成了该语言的“核心”,它们都有其特定目的。表 1 显示了 C++ 关键字 的完整列表,请注意它们都是小写的:
alignas | const | for | private | throw |
---|---|---|---|---|
alignof | constexpr | friend | protected | true |
and | const_cast | goto | public | try |
and_eq | continue | if | register | typedef |
asm | decltype | inline | reinterpret_cast | typeid |
auto | default | int | return | typename |
bitand | delete | long | short | union |
bitor | do | mutable | signed | unsigned |
bool | double | namespace | sizeof | using |
break | dynamic_cast | new | static | virtual |
case | else | noexecpt | static_assert | void |
catch | enum | not | static_cast | volatile |
char | explicit | not_eq | struct | wchar_t |
char16_t | export | nullptr | switch | while |
char32_t | extern | operator | template | xor |
class | false | or | this | xor_eq |
compl | float | or_eq | thread_local |
在给变量命名时,应选择能指示变量用途的名称。例如,有人可能会这样给变量命名:
但是,像 x 这样的名字对于提示变量的用途其实没有什么帮助。以下是一个更好的例子:
名称 itemsOrdered 可以让任何读取程序的人都会对该变量的用途有所猜测。这种编写代码的方式有助于生成自我解释型的程序,这意味着通过阅读代码就可以了解该程序的内容。因为现实中的程序通常有成千上万行代码,所以代码尽可能地自我解释是非常重要的。
有些人可能已经注意到变量名称 itemsOrdered 中存在的大小写字母混合的状况。虽然所有 C++ 的关键字都必须用小写字母表示,但在自定义的变量名中还是可以使用大写字母的。
itemsOrdered 中的 O 采用大写的原因是为了提高可读性。通常情况下,“items ordered”是两个单词,但是在变量名中不能有空格,所以两个单词必须组合成一个。当“items”和“ordered”组合在一起时,也就得到了如下变量定义语句:
为了使代码更容易阅读,在命名变量时,将第 2 个单词和任何后续单词的首字母大写,就像 itemsOrdered 这样。当然,这种风格的编写方法并不是强制性的,你完全可以按自己的习惯釆用全部小写、全部大写或组合使用。实际上,有些程序员喜欢使用下画线字符来分隔变量名中的单词,如下所示。
无论釆用哪一种编写风格,都要保持一致,并使变量名尽可能提示其用途。以下是所有 C++ 标识符必须遵循的一些特定规则。
变M名 | 是否合法 |
---|---|
dayOfWeek | 合法 |
3dGraph | 非法。变量名不能以数字开头 |
_employee_num | 合法 |
June1997 | 合法 |
Mixture#3 | 非法。变量名只能使用字母、数字和下画线 |
表 2 列出了若干变量名称,并指出了它们在 C++ 中是合法还是非法。