名称空间

来源:互联网 发布:英语六级真题听力软件 编辑:程序博客网 时间:2024/04/28 00:25

名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中,默认情况下,在名称空间中声明的名称的链接性为外部的。

使用using编辑质量倒入一个名称空间和使用多个using声明是不一样的。

假设名称空间和声明区域定义了相同的名称,如果试图使用using声明将名称空间的名称导入该声明区域,则这两个名称会发生冲突,从而出错。如果使用using编辑指令将该名称空间的名称导入该声明区域,则局部版本将隐藏名称空间版本。

namespace Jill

{

double bucket(double ){}

double fetch;

struct Hill{int a};

}


char fetch;//全局变量

int main()

{

using namespace Jill;//引入名称空间的全部名称

Hill Thrill; //创建一个变考量类型为:Jill::Hill

double water = bucket(2);

double fetch;//创建一个临时变量,如果有using Jill::fetch声明,着这条语句就错了

cin >>fetch;//输入本地变量

cin>>::fetch;//输入全局变量

cin >>Jill::fetch;


}


iunt foom()

{

Hill top;//错误的

Jill::Hill crest;

}

虽然函数中的using编译指令将名称空间的名称视为在函数之外声明的,但他不会呢使得该文件中的其他函数能够使用这些名称。

    C++鼓励程序员在开发程序时用多个文件。一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型的函数提供函数原型;并将函数定义放在一个独立的源代码文件中。头文件和源代码文件 一起定义和实现了用户定义的类型及其使用方式。最后在main()和其他使用这些函数的函数放在第三个文件中。

     静态变量在整个程序执行期间都存在,对于在函数外面定义的变量,其所属文件中位于该变量的定义后面的所哟函数都可以使用它(文件作用域),并可在程序的其它文件中使用(外部链接性)。另一个文件要使用这种变量,必须使用extern关键字来声明它。对于文件中共享的变量,应在一个文件中包含其定义(无需使用extern,但如果同时进行初始化,也可以使用它),并在其他文件中包含引用声明(使用extern且不初始化)。在函数外面使用关键字static定义的变量的作用为整个文件,但不能用于其他文件。在代码中使用关键字static定义的变量被限制在改代码块内部(局部作用域、无链接性),但在整个程序执行期间他都一直存在并且一直保存原值。

最后,在C++中把全局变量定义为const则变为文件全局变量。






0 0
原创粉丝点击