第8章 友元.ppt_第1页
第8章 友元.ppt_第2页
第8章 友元.ppt_第3页
第8章 友元.ppt_第4页
第8章 友元.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

第八章友元 目的 要求 重点 难点 8 1友元的说明和定义 功能 如果将外界的某个对象说明为某一个类的友元 那么这个外界对象就可以访问类中的私有成员 其中 外界对象可以是 另一个类的成员函数 一般的函数 一个类格式 声明可放在类的公用或私有部分 前面加上关键字friend classpoint intx y public point int int voidprint classcircle public friendvoidprint friendclasspoint friendvoidpoint print voidprint 8 2友元函数 说明 是指独立于类外的一般的外界函数 加上关键字friend 成为某类的友元函数 它可访问类中的私有成员 例 definestrmax32 include includeclassmyclass intx y char string public myclass int int char friendintsum myclasscl 通过传递参数来确定对象friendintstrlength myclasscl 友元函数无this指针friendvoidprint myclasscl myclass myclass intvx intvy char str x vx y vy string newchar strmax strcpy string str intsum myclasscl returncl x cl y 可直接访问类中私有成员intstrlength myclasscl returnstrlen cl string voidprint myclasscl cout x cl x y cl y n cout string cl string n voidmain myclasscl 10 10 mymyclassobject cout thesumis sum cl n cout thestringis strlength cl n print cl 注意问题 1 如果在某个类A中使用其它类B 类B要在类A之前声明或定义 classrealset classintset 使用realset的内容 2 voidsettoreal realset set 此函数传递对象指针而不是对象 原因 值传递与地址传递之间的区别 3 inset类中调用realset类的addelem 函数会导致系统开销大 因此 考虑使用友元来直接访问realset的私有成员 4 两个类中的print 函数完全一样 考虑是否可以共享 由于使用友元需传递对象参数 而两个类的print 函数参数类型不一样 因此无法共享 8 3友元成员 说明 将另一个类的成员函数声明为某个类的友元函数 使得此友元函数可访问某类的私有成员 格式 除了有关键字friend 还要加上成员函数所在的类名 上例可作如下修改 classrealset classintset public voidsettoreal realset friendvoidrealset settoint intset classrealset public voidsettoint intset friendvoidintset settoreal realset voidintset settoreal realset set set card card for inti 0 ielems i float elems i voidrealset settoint intset set set card card for inti 0 ielems i int elems i 8 4友元类 说明 某一个类是另一个类的友元 那么 作为友元的类中的所有成员函数都可访问另一个类中的私有成员 格式 friendclass 类名 includeclassstack classnode intdata node prev public node intd node n data d prev n friendclassstack classstack node top public stack top 0 voidpush inti intpop voidstack push inti node n newnode i top top n intstack pop node t top if top top top prev intc t data deletet returnc return0 main intc stacks for inti 0 i c s push c for i 0 i 10 i cout s pop return1 友元的特性 1 类A 类B A要在B

温馨提示

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

最新文档

评论

0/150

提交评论