第16章+命+名+空+间.ppt_第1页
第16章+命+名+空+间.ppt_第2页
第16章+命+名+空+间.ppt_第3页
第16章+命+名+空+间.ppt_第4页
第16章+命+名+空+间.ppt_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

第16章命名空间 杨章伟e mail yang505412 课程内容安排 命名空间使用命名空间类的作用域作用域this指针小结习题 什么是命名空间 简单来说 命名空间是C 的一种机制 用来把单个标识符下存在大量有逻辑联系的程序实体组合到一起 此标识符作为此组群的名字 命名空间事实上就是一个含有许多标识符的空间 其中包含了许多标识符的定义 在C 中 名称 name 可以是符号常量 变量 宏 函数 结构 枚举 类和对象等 为了避免在大规模程序的设计中这些标识符的命名发生冲突 C 标准引入了命名空间的概念 其使用关键字namespace来定义 简单地说 命名空间是为解决C 中的变量 函数的命名冲突而服务的 解决的办法就是将变量定义在一个不同名字的命名空间中 定义命名空间 C 中 有两种形式的命名空间 有名的命名空间和无名的命名空间 这两种命名空间的定义格式分别如下 有名的命名空间 namespace命名空间名 声明序列 无名的命名空间 namespace 声明序列 范例16 1 定义命名空间 该范例定义了一个命名空间Outer 其中包括变量 成员函数 子命名空间等 使用命名空间 标准C 给出了几种引用命名空间内变量和函数的方法 它们分别是使用作用域运算符 using指令和using声明使用作用域运算符引用成员 前面讲解过作用域运算符 比如多个类中定义了相同的成员函数时 需要通过作用域运算符指明是属于哪个类的 而使用作用域运算符引用命名空间中的成员也是如此 使用using指令 可以使用标准C 的using编译指令来简化命名空间中的名称的使用 格式为 usingnamespace命名空间名 命名空间名 使用using声明 using命名空间名 命名空间名 成员名 using指令与using声明的比较 通过上述using指令和using声明的学习 读者可以看到 using编译指令和using声明都可以简化对命名空间中名称的访问 using指令使用后 可以一劳永逸 它对整个命名空间的所有成员都有效 非常方便 而using声明 则必须对命名空间的不同成员名称逐个地去声明 非常麻烦 但是 一般来说 使用using声明会更安全 因为 using声明只会导入指定的名称 如果该名称与局部名称发生冲突 编译器会报错 而using指令导入整个命名空间中的所有成员的名称 包括那些可能根本用不到的名称 如果其中有名称与局部名称发生冲突 则编译器不会发出任何警告信息 而只是用局部名称去自动覆盖命名空间中的同名成员 类的作用域 类的作用域简称类域 其是指在类的定义中由一对花括号所括起来的部分 每一个类都具有该类的类域 该类的成员均在该类所属的类域中 简单来说 C 中的静态成员是指在类中通过关键字static说明的成员 其主要包括静态数据成员和静态成员函数 静态成员主要用于解决同一个类的不同对象之间数据和函数共享的问题 用一个类的不同对象的静态成员均使用同一个内存空间 静态数据成员是指类中用关键字static说明的那些数据成员 它是类的数据成员的特例 每个类只有一个静态数据成员的拷贝 从而实现同类对象之间的数据共享 作用域 前面提到的作用域是指类或变量的作用范围 事实上 C 程序语言的标识符作用域有三种 全局作用域 局部作用域 文件作用域 简单地说 域就是范围 而作用应理解为起作用 也可称为有效 所以作用域就是指一个变量或函数在代码中起作用的范围 局部作用域 一对 括起来的代码范围 属于一个局部作用域 全局作用域 如果一个变量声明或定义不在任何局部作用域之内 该变量称为全局变量 同样 一个函数声明不在任何局部作用域内 则该函数是全局函数 作用域嵌套 C 也允许在一个程序中包含既有全局作用域又有局部作用域 即作用域的嵌套 this指针 简单地说 this指针是一个特殊的指针 当类的某个非静态的成员函数在执行时 this指针指向类的一个对象 且这个对象的某个成员函数正在被调用 并作为隐含参数传递给每一个被声明的成员函数 在实际程序中 this指针用得最多的地方是用做返回值 使用this指针可以允许成员函数返回调用对象给调用者 在第13章运算符重载中 this指针常作为返回值 范例16 10 this指针的使用 该范例使用了this指针 其作为返回值 本章主要介绍了C 中命名空间的相关内容 主要包括命名空间的概念 定义 以及在具体程序中引用命名空间成员的几种方法 并将这些方法做了比较 这是本章的重点和难点 此外 本章还就作用域做了详细介绍 作用域包括变量变量的作用域 函数作用域和类作用域 作用域主要分为全局作用域 局部作用域和文件作用域 它们之间可以进行嵌套 最后 本章就C 中的静态成员 包含静态数据成员和静态成员函数做了讲解 小结 1 在C 程序中 为什么要引入命名空间的概念 解答 为了避免在大规模程序的设计中这些标识符的命名发生冲突 C 标准引入了命名空间的概念 其使用关键字namespace来定义 简单地说 命名空间是为解决C 中的变量 函数的命名冲突而服务的 将变量定义在一个不同名字的命名空间中 即使标识符的命名相同 由于其属于不同的命名空间 也不会产生冲突 2 命名空间在实际的使用中 如何引用其中的成员

温馨提示

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

评论

0/150

提交评论