天天看点

namespace的用法和作用

转载:http://topic.csdn.net/t/20051020/11/4338811.html#

在大型软件开发项目中,类型和函数名冲突是常有的事,如:定义专用类型时就常常不只一次地使用相同的名字。为了避免这个问题。人们通常在代码中使用不同的词缀,由此造成代码很难管理、使用、阅读和编辑。碰到这种问题常常使人郁闷非常而且容易出错。看看下面的代码:  

  class   string   {    

                    //这个类名虽然短小精干,意思表达明确,但是它已经被别人使用,你不能再用它作为类名了!    

        //...  

  };  

  class   CMYExclusive_string   {    

                      //   这倒是个较安全的名字,但是太冗长乏味。不断重复这样的名字会影响自己的心情。               //   况且这样处理还是有名字冲突的可能  

        //...  

  }  

  为了较好地解决这个问题,C++   提供了规定名字空间的手段,也就是用   namespaces   关键字。有了它,在自己代码中规范地命名类型和函数的自由度就大多了,有了它,你就可以充分使类型和函数的命名简洁、易于理解、使用方便和安全。从而摆脱了哪些在定义和声明中冗长乏味的词缀。你可以在名字空间中对类型或者函数进行分类,为类型和函数的使用系上安全带,例如:    

  //   某个头文件   vckbaseExcelSoft.h  

  namespace   vckbaseFSDUexcelSoft_   {  

        class   string   {  

                    //...  

                    };  

        class   vector   {  

                    //...  

                    };  

        //...etc.  

  }  

  接着可以象下面这样存取类型数据:  

  #include   "vckbaseExcelSoft.h"  

  void   main()   {  

          using   namespace   vckbaseFSDUexcelSoft_;    

          string   s;   //   引用   名字空间   vckbaseFSDUexcelSoft_里的   string   vckbaseFSDUexcelSoft_::string  

          //   下面又回到标准的   string    

          std::string   mySTDstr;    

  }