解释名字空间

来源:互联网 发布:江山人才网21js 编辑:程序博客网 时间:2024/05/02 00:28

       简单地说,名字空间namespace,是指标识符的各种可见范围。在写大程序时,不同程序员在使用标识符时,可能出现名字重叠冲突现象,为此C++中引入名字空间概念,将相同的名字放入不同的名字空间中,就可以避免相同的名字的冲突。

        举一个例子,我们两个班在上课,在每班各有一个学生叫李刚。为了防止名字冲突,在叫李刚时前面加上班级,这个班级就是名字空间。

       由于C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,所以我们在程序前面要加上使用它的语句:using namespace std;

     一 名字空间有三种使用方法(参照课本P12)

    1. using namespace std---这种方法,在后面没有特别声明均表示名字来自空间std;

    2.使用“::”域运算符。

        空间名::名字,如std::cout<<"hello!"--表明此处使用的标识符cout来自名字空间std;  

   3.使用using和域运算符

       如using std::cout<<"Hello!";

    二  名字空间还可以自己定义

      定义关健词:namesapce

      语法:namesapce 空间名

     例如:

#include<iostream>  using   namespace   std;  //使用标准命名空间  namespace   namespace1  //自己定义第一个命名空间  {             int a=100;  }   namespace  namespace2 //自己定义第二一个命名空间 {   int a=200; }    void   main()    {  int a=300;      cout<<"nameapce1:a="<<namespace1::a<<endl;      cout<<"nameapce2:a="<<namespace2::a<<endl;      cout<<“main:a="<<a<<endl;  }  

上例中,变量a定义过两次,重叠使用了,但不会出错,分别输出各自的值。如果不是在不同的名字空间里,编译是通过不了的。

  三.还可以嵌套定义名安空间

   例:

namespace   HelloWorld    {          namespace   Hello           {              void   foo()     {   cout<<"Hello";   }           }          void   fooo()     {   Hello::foo();          cout<<"   World!"<<endl;    }    }    void   main()    {        HelloWorld::fooo();    } 


注:初学者,可以不用自己定义名字空间,只要明白名字空间含义及为什么使用std标准空间就行了。

 

 

2 0
原创粉丝点击