C++-namespace命名空间(转)

C++-namespace命名空间(转),第1张

概述 很多初学C++的人,对于C++中的一些基本的但又不常用的概念感到模糊,命名空间(name space)就是这样一个概念 C++中采用的是单一的全局变量命名空间。在这单一的空间中,如果有两个变量或函数的名字完全相同,就会出现冲突。 当然,你也可以使用不同的名字,但有时我们并不知道另一个变量也使用完全相同的名字;有时为了程序的方便,必需使用同一名字。比如你定义 @H_404_255@
  @H_404_255@
很多初学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++-namespace命名空间(转)全部内容,希望文章能够帮你解决C++-namespace命名空间(转)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存