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

开发 后端
在大多数现代C++编译器中,名称只能包含大小写字母、下划线和0~9的数字。ANSI标准还允许在名称中包含通用字符集(Universal Character Set)(稍后介绍)中的字符,但一般不需要这项功能。

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++程序中还没有解释的代码行如下:

 

  1. 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指令,就必须把输出语句写为:

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

【编辑推荐】

  1. 浅谈C/C++中的顺序点和副作用
  2. 浅谈C/C++中的static和extern关键字
  3. C++中的指针用法汇集
  4. 阶乘相关的算法及其C++实现
责任编辑:于铁 来源: 中国IT实验室
相关推荐

2010-01-25 18:15:52

2010-01-25 14:56:08

C++程序

2010-01-22 14:53:21

2009-05-22 11:01:53

C++JavaC#

2023-10-31 19:00:56

2010-01-13 13:36:54

C++应用程序

2010-01-21 09:34:57

C++语法

2010-01-27 16:05:06

C++堆栈

2010-01-25 16:58:15

C++程序

2010-01-21 14:07:14

CC++声明

2010-01-25 10:25:19

C++变量

2010-01-28 16:31:54

C++类型

2010-01-27 17:16:52

C++构造函数

2010-01-21 13:33:44

C++基类

2010-01-20 10:19:55

C++数组

2020-08-21 13:20:36

C++If ElseLinux

2023-09-27 23:24:50

C++链表

2023-11-20 09:57:03

内联函数C++

2010-01-26 10:42:26

C++函数

2011-04-11 11:09:50

this指针
点赞
收藏

51CTO技术栈公众号