c++5_抽象与分类_5.ppt_第1页
c++5_抽象与分类_5.ppt_第2页
c++5_抽象与分类_5.ppt_第3页
c++5_抽象与分类_5.ppt_第4页
c++5_抽象与分类_5.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第五章抽象与分类 沈阳工程学院刘晓慧 C 语言程序设计 2 本节主要内容 友元友元函数友元类 3 教学目的 理解友元的概念 掌握友元函数和友元类的定义及使用 重点 友元的概念 友元函数和友元类的定义 友元函数和友元类在访问权限上的特点 难点 友元函数和友元类的使用教具 ppt课件 多媒体教学软件教学过程 问题引入 内容讲解 练习 小结 4 5 6友元 某些情况下 为了效率和方便性 需要允许一个函数或类访问另一个类的私有成员 这时就需要声明友元函数或友元类 友元在一定程度上破坏了类的封装和隐藏特性 除非在提高效率方面特别需要 一般不提倡使用友元 在重载运算符为非成员函数时 通常将运算符函数声明为友元 在类中有另一个类的对象作为成员时 有时需要声明组合类为部件类的友元 方便对成员对象进行操作 友元 5 友元函数 友元函数是一个说明在类体中的普通函数 格式 friend类型说明友元函数名 参数表 友元函数是一种说明在类体内的普通函数 不是类的成员函数 在函数体中访问对象的成员 必须用对象名 成员名 这一点和一般函数一样 但友元函数可以访问类中的所有成员 公有的 私有的 保护的 一般函数只能访问类中的公有成员 友元函数不受类中的访问权限关键字限制 可以把它放在类的公有 私有 保护部分说明 结果一样 而友元函数的定义在类的外部 某类的友元函数的作用域并非该类作用域 如果该友元函数是另一类的成员函数 则其作用域为另一类的作用域 否则与一般函数相同 友元 6 例5 28 友元函数的定义和使用 求两点间距离 include includeusingnamespacestd classPoint private doublex y public Point double x 0 double y 0 x x y y Point frienddoubleDistance Pointa Pointb 友元函数声明 doubleDistance Pointa Pointb 在类外进行友元函数定义 returnsqrt a x b x a x b x a y b y a y b y intmain Pointp 0 0 Pointq 1 4 cout Distance p q endl 友元函数调用 同普通函数一样return0 友元 注意友元函数并不是类成员函数 因此在友元函数中不可以直接使用数据成员 必须通过类对象 成员的方法访问 而类对象通过参数传递给友元函数 7 例5 28 友元函数的定义和使用 引用参数 include includeusingnamespacestd classPoint private doublex y public Point double x 0 double y 0 x x y y Point frienddoubleDistance Point 友元 8 友元类 友元类的使用类似于友元函数 只是此时声明的是一个类 友元类每个成员函数都是另一个类的友元函数 都可访问另一个类中的保护或私有数据成员 友元类定义格式 classA public friendclassB 声明类B为类A的友元类 友元关系是单向的 若类B是类A的友元 必须在类A中声明类B是类A的友元 但类A不是类B的友元 若想是 还必须在类B的定义中用friend声明类A是类B的友元 友元关系不具有传递性 若类A是类B的友元 而类B是类C的友元 并不表示类A就是类C的友元 友元 9 例5 29 友元类的定义和使用 includeusingnamespacestd classB 声明类BclassA private doublex public friendclassB 声明类B为类A的友元类A doublex this x x A classB public B B 类B中的成员函数作为类A的友元函数voidprint constAa cout a x endl 友元 10 例5 29 友元类的定义和使用 intmain AtempA 10 0 BtempB tempB print tempA return0

温馨提示

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

评论

0/150

提交评论