ISO/IEC 14882:2011之条款3——基本概念
1、[注:本条款展现了C++语言的基本概念。它解释了一个对象和一个名字之间的不同以及它们如何关联到表达式的值的类别。它介绍了一个声明和一个定义的概念,并呈现了类型、作用域、连接、存储时长的概念。启动和终止一个程序的机制也被讨论。最后,本条款展示出本语言的基本类型,并列出由这些基本类型构造出复合类型的方法。 ——注结束]
2、[注:本条款并不覆盖只影响本语言单个部分的概念。这些概念在相关的条款中介绍。 ——注结束]
3、一个实体是一个值、对象、引用、函数、枚举符、类型、类成员、模板、模板特化、名字空间、形参包、或this。
4、一个名字是表示一个实体或标签(6.6.4, 6.1)的一个identifier(2.11)、operator-function-id(13.5)、literal-operator-id(13.5.8)、conversion-function-id(12.3.2),或template-id(14.2)的一个使用。
5、表示一个实体的每个名字由一个声明引入。表示一个标签的每个名字要么通过goto语句(6.6.4),要么通过一个labeled-statement(6.1)引入。
6、一个变量通过一个引用(不包括对非静态数据成员的引用[译者注:即指向类成员的指针(::*)])的,或一个对象的声明被引入。变量的名字表示该引用或对象。
7、某些名字表示类型或模板。通常,每当遇到一个名字时,有必要在继续解析含有这个名字的程序之前确定这个名字是否表示这些实体[译者注:即,类型或模板]的其中之一。这个判定过程被称为名字查找(3.4)。
8、两个名字是相同的,如果
——它们是由相同字符序列构成的identifier,或
——它们是用相同的操作符形成的operator-function-id,或
——它们是用相同的类型形成的conversion-function-id,或
——它们是引用相同的类或函数的template-id(14.4),或
——它们是用相同的字面量后缀标识符所形成的字面量操作符(13.5.8)的名字
9、在多个翻译单元中所使用的一个名字可以潜在地引用这些翻译单元中的同一个实体,依赖于在每个翻译单元中所指定的名字的连接(3.5)。