微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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空间中的变量已经可见,如果不加限制,编译器就会无法识别是那一个命名空间中的变量。这一点一定要注意。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐