`

用其他名字来命名数组(1)

阅读更多

 

把代码分发给其他部门的诸多困难中有一个是我们不知道全局名字会有什么样的影响。

例如在Intel 公司有人写了:

class Array { ... };

那么他就不能在相同的程序中既使用上面的Array 类又使用我们实现的那个Array 类。

 

名字的可视性使这两份实现代码相互排斥。

在C++标准化之前,解决这个问题的传统做法是在全局可见的名字前加上一个唯一的字

符串前缀。例如我们可以这样发行数组Array 类

class Cplusplus_Primer_Third_Edition_Array { ... };

虽然这个名字可能是惟一的,我们不能保证这一点,但是写起来并不方便。标准C++

的名字空间机制是C++语言针对这个问题提供的语言一级的解决方案。

名字空间机制允许我们封装名字,否则,这些名字就有可能会污染、影响全局名字空间。

pollute the global namespace 一般来说,只有当我们希望自己的代码被外部软件开发部

门使用时才使用名字空间。例如,我们可以这样封装Array 类

namespace Cplusplus_Primer_3E {

template <class elemType>

class Array { ... };

// ...

}

关键字namespace 后面的名字标识了一个名字空间,它独立于全局名字空间。我们可以

在里面放一些希望声明在函数或类之外的实体名字空间,井不改变其中的声明的意义,只是

改变了它们的可视性,在继续讨论之前先扩展我们的可用名字空间集

namespace IBM_Canada_Laboratory {

template <class elemType>

class Array { ... };

class Matrix { ... };

// ...

}

namespace Disney_Feature_Animation {

class Point { ... };

template <class elemType, int size>

class Array { ... };

 

// ...

}

如果名字空间内的声明对程序而言不是立即可见的,那么我们怎样访问它们呢?我们可

以使用限定修饰名字符qualified name notation ,格式如下

namespace_identifier::entity_name;

如在

Cplusplus_Primer_3E::Array<string> text;

IBM_Canada_Laboratory::Matrix mat;

Disney_Feature_Animation::Point origin( 5000, 5000 );

虽然Disney_Feature_Animation IBM_Canada_Laboratory 以及Cplusplus_Primer_3E 都能

够唯一地标识相应的名字空间,但是如果在程序中经常这样使用,则多少会有些麻烦,使

用名字空间标识符如P3E DFA 或IBM_CL 会更方便一些,但是它们表达的信息相对比较少,

同时也增加了名字冲突的可能性。为了提供有意义的名字空间标识符,同时程序员又能很方

便地访问在名字空间内定义的实体。C++提供了别名设施。

分享到:
评论

相关推荐

    数组和指针

    arrayName 是数组的名字,数组名命名规则和变量名相同,遵循标识符命名规则 数组名是常量,表示数组在内存中的首地址 [ ] 表明声明的变量 arrayName 是一数组 arraySize 表示数组大小,必须是大于 0 的常数,或整型...

    锯齿数组打印杨辉三角形

    在计算机科学中,杨辉三角是一种特殊的数列,它以中国数学家杨辉的名字命名。杨辉三角的每一行的第一个和最后一个元素都是1,其他元素是其上一行的两个元素之和。这是一种非常有趣的数列,它在数学和计算机科学中...

    类存储数据与变量和数组的区别(论文)

    - **命名方式**:变量、数组和方法的命名通常采用“骆驼式”命名法,即首单词首字母小写,后续单词首字母大写。类的命名则采用每个单词首字母大写的“帕斯卡式”命名法。 - **数据类型**:变量可以是基本数据类型或...

    C的指针数组和数组指针

    - **对象命名**:动态创建的对象本身没有名字,而是通过返回的指针进行访问。 - **初始化**:堆区不会自动初始化,因此需要显式地初始化新分配的对象。 - **动态数组分配**: - `T *arr = new T[size];`:用于分配...

    shell脚本编程之数组

    数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的元素。数组是在...

    第五章 数组.docx

    其次,指定数组的名字,这个名字需要遵循C语言的标识符命名规则,确保不与其他变量名冲突;最后,通过常量表达式来定义数组的长度。数组的长度必须是一个编译时确定的常量,因此不能使用运行时才确定的变量值来声明...

    掌握控件数组的建立和使用PPT学习教案.PPTx

    数组是一个复合数据类型,由一组具有相同数据类型的变量组成,通过一个名字和一个或多个下标来标识。数组的作用在于能够同时存储和操作一组相关的值,简化了对大量数据的管理。数组的元素可以通过数组名和下标进行...

    第七章-数组数据结构与数组的概念-影响程序设计的因素优秀文档.ppt

    数组是一组具有同样类型的数据的集合,统一用一个名字代表着一组数。数组元素下标数组名,数组中的各成员称数组元素,由数组名加下标唯一地确定。数组可以是一维数组、二维数组、三维数组等。 一维数组的定义和引用...

    java入门 - 数组基础-chapter06.rar

    在声明一维数组时,需要指定数组的类型和数组的名字,数组的名字需要符合Java标识符的命名规则。创建一维数组可以使用new关键字后跟数组类型和数组长度,也可以在声明数组时直接初始化。 多维数组则是数组的数组,...

    C语言程序设计:第7章 数组.ppt

    在C语言中,可以使用malloc()或calloc()函数在运行时动态分配数组,释放时用free()。这使得数组的大小可以在程序运行时确定或更改。 总的来说,数组是C语言中基础且重要的数据结构,通过理解和掌握数组的概念、声明...

    编写代码命名规范

    骆驼命名法是一种通过混合使用大小写字母来构成变量和函数名字的方法。这种方法的特点是在每个逻辑断点处使用大写字母进行标记,以区分不同的单词部分。 **例子:** - `printEmployeePaychecks()`: 使用骆驼命名法...

    vc++6.0中动态数组实现(例如string类对象数组等).pdf

    当使用`new`分配动态数组时,我们只需要指定元素的类型和数组的长度,而不需要为数组本身命名。例如: ```cpp int *pia = new int[10]; // 分配一个包含10个未初始化的int型元素的数组 ``` 这里的`new int[10]`...

    数组和C 风格字符串PPT学习教案.pptx

    1. **单一命名**:数组使用一个名字来标识一组数据。 2. **同种类型**:数组中的所有元素都是同一类型的。 3. **固定数量**:数组的元素数量在声明时是确定的。 4. **元素位置**:每个元素都有其特定的位置,可以...

    java编程命名规范

    数组应该总是用下面的方式来命名,例如,byte[] buffer; 而不是 byte buffer[]; 方法的参数命名规范: 使用有意义的参数命名,如果可能的话使用和要赋值的字段一样的名字。例如,SetCounter(int size){ this.size =...

    计算机软件及应用第5章数组PPT学习教案.pptx

    数组标识符是数组的名字,遵循变量命名规则。常量表达式则指定数组的长度,必须是编译时常量。 数组元素的下标从0开始,例如一个包含10个元素的数组a,其下标范围为a[0]到a[9]。数组名本身表示数组首元素的地址,不...

    序列构成的数组1

    总的来说,Python的序列类型提供了丰富多样的数据存储和处理手段,无论是处理不同类型数据的容器序列,还是优化内存使用的扁平序列,或者是具有命名字段的元组,都有其独特的应用场景和优势。熟练掌握这些序列类型...

    Java语言基础入门教程 Java开发编程基础课程 第5章 数组 共8页.pptx

    例如,我们可以用数组来存储学生名单、成绩列表等。 #### 二、一维数组 ##### 创建一维数组 在Java中,声明一维数组时需要指定数组元素的数据类型,并为数组命名。可以通过以下两种语法形式: 1. **数组元素类型...

    杨辉三角数组.zip

    虽然以13世纪中国数学家杨辉的名字命名,但这个模式在古代印度、波斯和欧洲都有独立的发现。它体现了数学思想的普遍性和跨文化传承。 综上所述,杨辉三角数组是一个充满魅力的数学结构,它的理论深度和应用广泛性...

    软件编程命名规则

    本文将详细介绍一种软件编程中的命名规则,并通过具体的例子来帮助理解和应用。 #### 二、命名规则的重要性 1. **提高软件质量**:良好的命名规范有助于减少错误和bug的发生概率,因为清晰明了的命名可以降低误解的...

Global site tag (gtag.js) - Google Analytics