命名空间
在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。
MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。
我们常常会见到这样的语句:
或者还有这样的:
这些其实就是使用了C++的名称空间技术。
什么是名称空间呢?名称空间可以看做一个声明区域,其区域内的变量在内部有效,比如假设有两个名称空间:
两个名称空间有着一样的变量,但因为是在不同的名称空间内,所以互相不会发生冲突。我们在使用时可以这样调用:
所以,我们有时候也会看到这样的代码:
但如果我们使用了using声明,就可以简单一点:
或者更简单的,我们可以使用using编译指令:
其中,cin、cout、endl都是存在于std名称空间内的。
上面其实是两种using,一个叫using声明,一个叫using编译指令。using声明用于声明名称空间内的某一个变量或函数,而using编译指令会将整个名称空间全部都声明。
一般而言我们建议对需要的变量或函数使用using声明,这样就不用一股脑全部声明,难保有些变量或者函数在别的名称空间内也有,这样又会产生冲突,实际上这是不允许的。
名称空间也是可以嵌套的。
有些名称空间没有名字:
这种名称空间因为没有名字,所以不能用using声明和using编译指令来操作,也就不能再其他文件使用,只能在当前文件声明处到作用域结尾可用,这也就类似于static的作用了。实际上C++不建议使用static,而更推荐这种做法:
而名称空间用的最多的地方,就是供其他文件去访问了。就像std一样。
对于名称空间的使用,也有一些指导原则:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对http://www.xiazaiwo.net的支持。
按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
→我们致力于为广大网民解决所遇到的各种电脑技术问题 如果您认为本词条还有待完善,请 编辑词条
上一篇公立医院告别药品加成
下一篇拼音输入法哪个好