C++之命名空间

来源:互联网 发布:东莞市知美整形医院 编辑:程序博客网 时间:2024/05/02 01:00

一:命名空间的定义与简介:

      命名空间是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的命名冲突。例如有两个头文件中都定义了Student类,那么在主程序中都包含这两个头文件时,使用Student类便会编译出错。或者在程序中引入不同的库时有相同的实体名,则在编译时就会出现名字冲突。或者库中含有与程序的全局变量同名的实体。有人称之为全局命名空间污染。

        为解决这个问题,ANSI C++增加了命名空间,实际上是一个由程序设计者命名的内存区域,程序设计者根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中。从而与其他全局实体分隔开。如:

       namespace s

      { int a;}

       namespace 是关键字,s是指定的命名空间名。在其中声明的实体被称为命名空间成员。使用时 :

          s::a;

       注意与类声明的区别,花括号后面没有分号。

二:使用命名空间成员的方法:

      1,使用命名空间别名:

        例如:namespace  playground

                    {.....}

                   namespace   ssr=playground;//此时ssr就相当于playground的引用。

      2.使用“using 命名空间成员名”

          例如:using s::Student;

          则在using所在的作用域中用s中的Student成员时,不需要用逐个用命名空间限定。

      3.使用“using namespace 命名空间名“

         例如:using namespace s;

         则在本作用域中用到命名空间s中的所有成员时,都不需要再用命名空间去限定。

三:无名的命名空间:

       例如:

               namespace 

              {void fun()

               {cout<<"OK"<<endl;}

               }

          因为命名空间没有名字,在其它文件中显然无法引用,它只在本文件的作用域中有效。

         在本程序中的其他文件中也不能使用fun函数,fun函数作用域只能是本文件。

四:标准命名空间std

      标准C++库的所有标识符都是在一个名为std的命名空间中定义的。

       using namespace std;


1 0
原创粉丝点击