C++程序中可以命名的5种元素


  C++程序中的许多元素都有用来 示意它们的名称(也称为标识符) 。在C++程序中, 可以命名的5种元素是:

  (1) 函数 。函数是自包括的、可执行代码的命名块 。第8章将 详尽 探讨如何定义函数 。

  (2) 变量 。变量是内存中的指定区域,用于存储数据项 。第2章将 阐述变量 。

  (3) 类型 。类型是 可以存储的数据 品种 。例如类型int用于存储整数 。第2章和后续的章节将介绍类型,尤其是第11和12章 。

  (4) 标签 。标签提供了 示意特定语句的 模式 。它们很少 使用,第4章将 详尽介绍 。

  (5) 命名空间 。命名空间是用一个 集中名称标识程序中一组命名项的 模式 。这听起来可能让人 混同,但 毋庸 担心,稍后就介绍命名空间,第10章将 详尽 阐述 。

  在大多数现代C++编译器中,名称不得不包括大小写字母、下划线和0'9的数字 。ANSI 标准还同意在名称中包括通用字符集(Universal Character Set)(稍后介绍)中的字符,但普通不需求这项 性能 。

  名称必须由同意的字符构成,不要在名称的中间外加空白字符(空格、制表符等),不然,编译器就不会把该名称看做是一个名称,而是看做两个名称,从而招致 解决不正确 。另一个 制约是名称不能以数字开头 。下面是一些合法的名称例子:

  value2 Mephistopheles BettyMay Earth_weight PI

  下面的名称就不合法:

  8Ball Mary-Ann Betty May Earth-weight 2PI

   揭示:

  包括两个下划线的名称,或者以下划线开头,后跟一个大写字母的名称,是C++ 标准库的保留名称,在程序中不应 使用这类名称 。编译器不会 审查这类名称,消费者不得不在程序出错时发现有一个 摩擦的名称 。

  我们将在 使用名称时进一步 探讨它们,第2章 探讨变量时就开始 探讨名称 。

  命名空间

  在上面的 方便C++程序中,有一行代码没有解释 。为了 了解这行代码,需求晓得什么是命名空间 。为了 注明命名空间的 含意,下面先 探讨名称 。上面C++程序中还没有解释的代码行如下:

  using namespace std;

  命名空间的名称有点像姓氏 。家庭中的每个成员都有自己的姓名,在大多数家庭中,每个家庭成员都有一个惟一的名字 。在Smith家中,有Jack、Jill、Jean和Jonah 。在家庭成员中间,用名字来指代每个人 。然而, 其余家庭的成员可能与Smith家的成员有 雷同的名字 。例如,在Jones家中,其成员的名字是John、Jean、Jeremiah和Jonah 。Jeremiah Jones在 称呼Jean时,显然是指Jean Jones 。假如他想指代Smith家中的Jean,就要 使用全名Jean Smith 。假如不是这两个家庭的成员,就不得不 使用每个人的全名来指代他本人,例如Jack Smith或Jonah Jones 。

  这便是命名空间的作用 。命名空间的名称 类似于姓氏 。在命名空间内部, 可以 使用其成员的名字 。在命名空间的外部,就不得不把某个实体的名字和命名空间的名称组合起来, 示意该命名空间中的实体 。命名空间的 目标是提供一种机制,使大程序的各个 部分中因浮现重名而招致 摩擦的可能性降到最低 。普通状况下,一个程序中包括几个不同的命名空间 。

  C++ 标准库中的实体都是在命名空间std中定义的,所以 标准库中的全部实体名都用std来限定 。cout的全名便是std::cout,其中的两个冒号有一个十分好听的名称: 规模解析运算符,稍后详述 。在这个例子中,该运算符把命名空间的名称std和流的名称cout分隔开来 。

  在这个 方便的C++程序中,开头的using指令 示意我们 盼望在每次 引用命名空间std中的元素时,不指定命名空间的名称 。 接续前面的类推,使程序文件成为std家族的一组荣誉成员,就 可以只用名字来 引用每个成员了 。其 长处之一是不需求把cout 示意为std::cout,这样程序代码就更 方便 。假如省略using指令,就必须把输出语句写为:

  std::cout <<"The best place to start is at the beginning";