语言从入门到精通-第18章使用命名空间_第1页
语言从入门到精通-第18章使用命名空间_第2页
免费预览已结束,剩余1页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用命名空间作用域解析运算符(::)using指令(usingnamespace)

using指令与using声明的比较作用域解析运算符(::)对命名空间中成员的引用,需要使用命名空间的作用域解析运算符“::”。【实例18.1】中演示了使用“::”域运算符对命名空间中变量的使用。using指令(usingnamespace)为了省去每次调用Inner成员和标准库的函数和对象时,都要添加Outer::Inner::和std::的麻烦,可以使用标准C++的using编译指令来简化对命名空间中的名称的使用。格式为:usingnamespace命名空间名[::命名空间名……];在这条语句之后,就可以直接使用该命名空间中的标识符,而不必写前面的命名空间定位部分。因为using指令,使所指定的整个命名空间中的所有成员都直接可用。除了可以使用using编译指令(组合关键字usingnamespace)外,还可以使用using声明来简化对命名空间中的名称的使用。格式为:using命名空间名::[命名空间名::……]成员名;注意:关键字using后面并没有跟关键字namespace,而且最后必须为命名空间的成员名(而在using编译指令的最后,必须为命名空间名)。与using指令不同的是,using声明只是把命名空间的特定成员的名称添加到声明所在的区域中,使得该成员可以不需要采用(多级)命名空间的作用域解析运算符来定位,而直接被使用。但是该命名空间的其他成员,仍然需要作用域解析运算符来定位。using指令与using声明的比较前面的小节已经分别介绍了using指令与using声明的概念。可见,using编译指令和using声明,都可以简化对命名空间中名称的访问。using指令使用后,可以一劳永逸,对整个命名空间的所有成员都有效,非常方便。而using声明,则必须对命名空间的不同成员名称,一个一个地去声明,非常麻烦。但是,一般来说,使用using声明会更安全。因为,using声明只导入指定的名称,如果该名称与局部名称发生冲突,编译器会报错。而using指令导入整个命名空间中的所有成员的名称,包括那些可能根本用不到的名称,如果其中有名称与局部名称发生冲突,则编译器并不会发出任何警告信息,而只是用局部名去自动覆盖命名空间中的同名成员。特别是命名空间的开放性,使得一个命名空间的成员,可能分散在多个地方,程序员难以准确知道,别人到底为该命名空间添加了哪些名称。虽然使用命名空间的方法有多种可供选择。但是不能贪图方便,一味使用using指令,这样就完全背离了设计命名空间的初衷,也失去了命名空间应该具有的防止名称冲突的功能。一般情况下,对偶尔使用的命名空间成员,应该使用命名空间的作用域解析运算符来直接给名称定位。而对一个大命名空间中的经常要使用的少数几个成员,提倡使用using

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论