现在的位置: 首页 > 综合 > 正文

解释名字空间

2014年10月29日 ⁄ 综合 ⁄ 共 1065字 ⁄ 字号 评论关闭

       简单地说,名字空间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标准空间就行了。

 

 

抱歉!评论已关闭.