您的位置:首页 > 其它

命名空间

2015-08-12 10:08 190 查看
C++中命名空间的意义

为了避免变量或函数重命名;在命名空间中的每个名字必须表示唯一实体,而在不同命名空间中,可以有相同名字的成员;

需要使用命名空间的作用域运算符(::)。

using指示:using namespace std;  // 引入命名空间std

using声明:using 命名空间名::[命名空间名::……]成员名;  // 例如 using OLib::List;

区别:using声明是将一个成员引入当前命名空间作用域内;using指示是将所有成员引入当前和上一层命名空间作用域内

 

例子:

 #include <iostream>  

using namespace std;     

namespace JiZhuoMi   // 命名空间JiZhuoMi

{  

    char *szUrl = "www.jizhuomi.com";  

}    

namespace Software  // 命名空间Software

{  

    char *szUrl = "www.jizhuomi.com/software/";  

}    

int main(int argc, char* argv[])  

{  

    cout << JiZhuoMi::szUrl << endl;  // 输出命名空间JiZhuoMi中的字符串  

    cout << Software::szUrl << endl;  // 输出命名空间Software中的字符串  

    return 0;  

}

 运行结果:www.jizhuomi.com

           www.jizhuomi.com/software/

 

“using namespace *;”的意义

访问命名空间JiZhuoMi和Software中的字符串变量时,都需要在前面加上“命名空间::”,但cout定义在命名空间std中,前面却不需要加“std::”,这是因为上面这样一条语句“using namespace std;”。

using namespace *;(这里的*表示可以是任何命名空间)的作用是释放命名空间*中的变量或函数等,使之在被访问时可以不必加“命名空间::”,访问方法与一般的变量或函数无异,就像上面的cout一样。

using namespace *;会给我们书写程序带来方便,但也要慎用,如果释放了多个命名空间中的东西后,它们又可能会引起命名冲突。鸡啄米给大家演示下同时释放JiZhuoMi和Software命名空间的情况。

例子:

#include <iostream>  

using namespace std;  

// 命名空间JiZhuoMi  

namespace JiZhuoMi  

{  

    char *szUrl = "www.jizhuomi.com";  

}   

// 命名空间Software  

namespace Software  

{  

    char *szUrl = "www.jizhuomi.com/software/";  

}    

// 释放命名空间JiZhuoMi和Software  

using namespace JiZhuoMi;  

using namespace Software;    

int _tmain(int argc, _TCHAR* argv[])  

{  

    cout << szUrl << endl;    // 这里会提示编译错误,因为它不知道访问哪个变量  

    return 0;  



//本文来源于鸡啄米http://www.jizhuomi.com/ , 原文地址:http://www.jizhuomi.com/software/289.html

   //编译错误

针对同时释放多个命名空间的上述例子,出现编译错误是由于不知道访问哪个命名空间中的变量,如果在main中重新定义,如下例子

例子:

#include <iostream>  

using namespace std;   

// 命名空间JiZhuoMi  

namespace JiZhuoMi  

{  

    char *szUrl = "www.jizhuomi.com";  

}  

// 命名空间Software  

namespace Software  

{  

    char *szUrl = "www.jizhuomi.com/software/";  

}  

// 释放命名空间JiZhuoMi和Software  

using namespace JiZhuoMi;  

using namespace Software;   

int main(int argc, char* argv[])  

{  

    char *szUrl = "url";  

    cout << szUrl << endl;  

    return 0;  



//本文来源于鸡啄米 http://www.jizhuomi.com/ , 原文地址:http://www.jizhuomi.com/software/289.html

运行结果:url
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: