博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
using namespace std
阅读量:4114 次
发布时间:2019-05-25

本文共 2209 字,大约阅读时间需要 7 分钟。

命名空间的意义   为什么需要将函数定义在命名空间中呢?这其实是为了避免变量或函数重命名的问题。试想,一个项目组内多个工程师进行开发,有可能会出现全局变量或函数重名的现象,而如果每个人都定义了自己的命名空间,就可以解决这个问题,即使重名,只要分属不同的命名空间就不会引起问题。   这样大家应该明白了,命名空间就是将多个变量和函数等包含在内,使其不会与命名空间外的任何变量和函数等发生重命名的冲突。   命名空间实例`
#include 
using namespace std; // 命名空间JiZhuoMi namespace JiZhuoMi { char *szUrl = "www.jizhuomi.com"; } // 命名空间Software namespace Software { char *szUrl = "www.jizhuomi.com/software/"; } int _tmain(int argc, _TCHAR* argv[]) { cout << JiZhuoMi::szUrl << endl; // 输出命名空间JiZhuoMi中的字符串 cout << Software::szUrl << endl; // 输出命名空间Software中的字符串 return 0; }

我们看到,使用“命名空间::标识符名称”的方式就可以访问命名空间中的变量或函数了,而且即使是重复命名也可以正确访问。

using namespace *;的意义

在上面的实例中,我们访问命名空间JiZhuoMi和Software中的字符串变量时,都需要在前面加上“命名空间::”,但cout定义在命名空间 std中,前面却不需要加“std::”,这是因为上面这样一条语句“using namespace std;”。   using namespace *;(这里的*表示可以是任何命名空间)的作用是释放命名空间*中的变量或函数等,使之在被访问时可以不必加“命名空间::”,访问方法与一般的变量或函数无异,就像上面的cout一样。   using namespace *;会给我们书写程序带来方便,但也要慎用,如果释放了多个命名空间中的东西后,它们又可能会引起命名冲突。鸡啄米给大家演示下同时释放JiZhuoMi和Software命名空间的情况。
#include 
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; }

上例中,编译器会提示编译错误,因为它不知道该访问哪个命名空间中的字符串变量szUrl。这时要想正确访问,还需在szUrl前面加上命名空间修饰。

而如果main函数中又定义了一个局部变量szUrl呢?
#include 
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[]) { char *szUrl = "url"; cout << szUrl << endl; return 0; }

运行后我们发现,szUrl访问正确,可见,这种情况下,编译器优先访问局部变量。

转载地址:http://dugsi.baihongyu.com/

你可能感兴趣的文章
Linux基础系列-Kernel 初始化宏
查看>>
Linux子系统系列-I2C
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>
DLL中建立进程共享数据段需要注意的语法问题
查看>>
服务器端技术----Http请求的处理过程
查看>>
C语言-预处理指令2-条件编译
查看>>
C语言-预处理指令3-文件包含
查看>>
C语言-变量类型
查看>>
C语言-static和extern关键字1-对函数的作用
查看>>
C 语言-static和extern关键字2-对变量的作用
查看>>
DataTable使用技巧总结
查看>>
用Setup Factory打包基于.Net的WinForm程序
查看>>
.Net开发常用辅助工具大全
查看>>
获取当前活动窗口句柄和标题
查看>>
CallWindowProc与setwindowlong 用法
查看>>
HOOK专题
查看>>
Hook钩子C#实例
查看>>
骨质增生
查看>>
苏州各园林的地址和票价
查看>>