C++-namespace命名空间转

 
很多初学C++的人,对于C++中的一些基本的但又不常用的概念感到模糊,命名空间(name space)就是这样一个概念 C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。 当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字;有时为了程序的方便,必需使用同一名字。比如你定义了一个变量 string user_name,有可能在你调用的某个库文件或另外的程序代码中也定义了相同名字的变量,这就会出现冲突。命名空间就是为解决C++中的变量、函数的命名冲突而服务的。解 决的办法就是将你的strTemp变量定义在一个不同名字的命名空间中。就好像张家有电视机,李家也有同样型号的电视机,但我们能区分清楚,就是因为他们 分属不同的家庭。 例如:

#include < iostream >     

#include
string     

using namespace std;    

// using namespace编译指示,使在C++标准类库中定义的名字在本程序中可以使用    

否则,iostream,string 等c++标准类就不可见了,编译就会出错。    

两个在不同命名空间中定义的名字相同的变量    

myown1 ... {    

        
string user_name = "myown1;    

     }
    

myown2 myown2int main()    

{    

     cout
<<    

        
Hello, myown1::user_name    //用命名空间限制符myown1访问变量user_name    

        ... and goodbye! ;    

     cout
myown2::user_name 用命名空间限制符myown2访问变量user_name    ;    

    
return0;    

}
   


          当然,我们也可以使用程序开头的预编译指示来使用命名空间中的名字。使用预编译指示的好处在于在程序中不必显式地使用命名空间限制符来访问变量。以上主程序可修改为:
{    

    usingnamespace myown1;    

     cout
user_name    

        
;    

   using namespace myown2;         cout myown2::user_name    

        但第二个变量必需用命名空间限制符来访问,因为此时myown1空间中的变量已经可见,如果不加限制,编译器就会无法识别是那一个命名空间中的变量。这一点一定要注意。

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...