24命名空间_精品.pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;;? 大型应用程序经常使用来自不同厂商的开发库,几乎不可避免会使用相同的名字,也就是说一个库中定义的名字可能与其他库中的名 字相同而产生冲突,使得程序员不能组合各自独立的开发库到一个 程序中。 ? 命名空间是用来限定名字的解析和使用范围的,它是C++开发大型程序的工具之一。;? 命名空间的原理是将全局作用域划分为一个一个的命名空间,每个命名空间是一个独立的作用域,在不同命名空间内部定义的名字彼 此之间互不影响,从而有效的避免了命名空间污染。;? 1. 定义命名空间 ? 命名空间的定义形式为:;? 在命名空间作用域内,可以包含以下内容: ? ① 变量、对象以及它们的初始化。 ? ② 枚举常量。 ? ③ 函数声明以及函数定义。 ? ④ 类、结构体声明与实现。 ? ⑤ 模板。 ? ⑥ 其他命名空间。;;? (1)每个命名空间是一个作用域 ? 定义在命名空间中的实体称为命名空间成员。命名空间中的每个名字必须是该命名空间中的唯一实体,不同命名空间可以具有同名成 员。 ;? 在命名空间中定义的名字可以被命名空间中的其他成员直接访问,命名空间外部的代码必须指出名字定义在哪个命名空间中,即作用 域运算符限定命名空间,形式为:;? (2)命名空间可以是不连续的 ? 命名空间可以在几个部分中分开定义,即命名空间是累积的。一个命名空间可以分散在多个文件中。 ;? (3)接口和实现分离 ? 命名空间可以不连续意味着可以做以下事情: ? 命名空间成员如果是类,可以将作为类接口的函数声明和对象声明放在头文件中,使用这些命名空间成员的文件可以包含这 些头文件。 ? 命名空间类成员的定义可以放在单独的源文件中。;? 例:;? (4)定义命名空间成员 ? 在命名空间内部定义的函数可以使用同一命名空间中定义的名字。;? (5)全局命名空间 ? 定义在全局作用域的名字(任何类、函数或命名空间外部声明的名;? (6)嵌套命名空间 ? 嵌套命名空间中的名字遵循名字规则:外围命名空间中声明的名字;;? (1)未命名的命名空间中定义的名字可以直接使用,没有命名空间名字来限定它们。 ? (2??未命名的命名空间可以在给定文件中不连续,但不能跨越文件,每个文件有自己的未命名的命名空间。本质上在一个文件中所 有未命名的命名空间会被系统用同一个标识符代替,且区别于其他 文件的标识符。;? 例:;? (3)未命名的命名空间专门用于声明局部于文件的实体。 ? (4)未命名的命名空间中定义的名字只在包含该命名空间的文件中可见。如果另一文件包含一个未命名的命名空间,两个命名空间 不相关,可以定义相同名字的实体。;? 1. 命名空间成员的使用 ? 引用命名空间成员的形式为:;? (1)命名空间的别名 ? 可以为命名空间起一个别名来代替较长的命名空间名,形式为:;? (2)using声明 ? 可以使用using声明引入命名空间成员,形式为:;? (3)using指示 ? using指示的形式为:;? 2. 类和命名空间 ? 对命名空间内部使用的名字的查找遵循常规的C++名字查找规则:;;;? (1)实参相关的查找与类类型形参 ? 有简单程序:;? (2)标准命名空间的使用;? 使用std限定的一个好处就是对每个std成员做限定,例如:;

您可能关注的文档

文档评论(0)

有谱教育资源分享 + 关注
实名认证
内容提供者

热爱生活,分享教育专业文档! 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档