山东大学:《Visual C++程序设计》第12章 类的其他特性(张晓如)

第12章 类的其他特性
2021/2/24 1 第12章 类的其他特性

友元函数 为什么要定义友员类中的私有数据不能 被外部任意访问修改,只能由 类本身的函数访问修改。 友员的作用被定义为友员的类或函数 可以访问修改类的私有数据。 友员给予别的类或非成员函数 访问私有成员的权利 2021/224
2021/2/24 2 友元函数 为什么要定义友员 类中的私有数据不能 被外部任意访问修改, 只能由 类本身的函数访问修改。 友员的作用 被定义为友员的类或函数 可以访问修改类的私有数据。 友员给予别的类或非成员函数 访问私有成员的权利

友元函数的说明及使用 什么是友员函数将一个外部函数(不是类全 部,也不是部分成员函数)声明为一个类的友员, 使这个函数能访问类的私有和保护成员。 声明形式 friend返回类型函数名(形参); 例如: friend void show(stn&s 例1:用友元函数的方法求圆柱体的体积。 120112001 2021/224 3
2021/2/24 3 友元函数的说明及使用 例1:用友元函数的方法求圆柱体的体积。 1201 什么是友员函数 将一个外部函数(不是类全 部,也不是部分成员函数)声明为一个类的友员, 使这个函数能访问类的私有和保护成员。 声明形式 friend 返回类型 函数名(形参); 例如: friend void show(st_n &st); 12001

注 1友元函数不是类的成员函数,函数体中要用运算符 “”来访问对象的成员,不能用this指针 区别:友元函数必须在类的定义中说明,函数体 可在类内也可在类外定义;友元函数可访问类中的所 有成员。 2类中对友元函数指定访问权限无效。 3友元函数的作用域与一般函数的作用域相同 4使用友元函数的目的是提高程序的运行效率 5.友元函数破坏了类的封装性,因而应谨慎使用。 2021/224
2021/2/24 4 注: 1.友元函数不是类的成员函数,函数体中要用运算符 “.”来访问对象的成员,不能用this指针。 区别:友元函数必须在类的定义中说明,函数体 可在类内也可在类外定义;友元函数可访问类中的所 有成员。 2.类中对友元函数指定访问权限无效。 3.友元函数的作用域与一般函数的作用域相同。 4.使用友元函数的目的是提高程序的运行效率。 5.友元函数破坏了类的封装性,因而应谨慎使用

成员函数用作友元 什么是友员成员函数将一个类的成员函数(不 是类全部)声明为另一个类的友员,使这个函数 能访问该类的私有和保护成员。 声明形式 friend返回类型类名:函数名 例如: friend void sco:show(); 2021/224 5
2021/2/24 5 成员函数用作友元 什么是友员成员函数 将一个类的成员函数(不 是类全部)声明为另一个类的友员,使这个函数 能访问该类的私有和保护成员。 声明形式 friend 返回类型 类名::函数名 例如: friend void sco::show( );

将类C的一个成员函数说明为类D的友元函数的一般格式: class D;/)类D作引用性说明 class ci 类C的成员定义 public void fun(d &) ∥)能给出函数的原型说明,因类D没有定义 class Di friend void c:fun(D&);∥定义友元函数 void C:: fun( &d) 始定义成员函数 2021/2/24 6
2021/2/24 6 将类C的一个成员函数说明为类D的友元函数的一般格式: class D; //对类D作引用性说明 class C{ … //类C的成员定义 public: void fun(D &); //只能给出函数的原型说明,因类D没有定义 }; class D{ … friend void C::fun(D &); //定义友元函数 }; void C::fun(D &d) //开始定义成员函数 {…}

将一个类M中所有成员说明成另一个类N的友元的一般格式 class Ni ∥)员定义 friend class m 说明类M是类N的友元 class Mi ∥成员定义 类M中的所有成员可使用类N中的全部成员,称类 M为类N的友元。 友元关系不传递, 不具有交换性,也 不具有继承性 2021/224
2021/2/24 7 将一个类M中所有成员说明成另一个类N的友元的一般格式: class N{ … //成员定义 friend class M; //说明类M是类N的友元 }; class M{ … //成员定义 }; 类M中的所有成员可使用类N中的全部成员,称类 M为类N的友元。 友元关系不传递, 不具有交换性,也 不具有继承性

例2:将一个类的成员函数用作另一个类的友元函数。 执行后输出: 1202 al x=25 al. y=40 b1.c=55 b1. d=66 al x=55 al. v=66 例2有关内容总结 1.定义了类A中的函数Sexy()是类B 的友员,建立了类和类的成员函数之 间的联系。使编程显得更便利。 2021/224 8
2021/2/24 8 例2:将一个类的成员函数用作另一个类的友元函数。 执行后输出: 1202 a1.x=25 a1.y=40 b1.c=55 b1.d=66 a1.x=55 a1.y=66 例2 有关内容总结 1. 定义了类A中的函数 Setxy( ) 是类 B 的友员,建立了类和类的成员函数之 间的联系。使编程显得更便利

2.友员成员函数可以访问并修改类的私有 或保护数据,调用类的私有或保护函数 使类不至于由于封装而增加了编程的复 杂性。 总的目标:使外部类的成员函数能访问修改类 的私有或保护数据、能调用类的私有或保护函 数。与友员类的区别是仅将部分成员函数声明 为友员,而不是整个类。 例3:把类作为友元 执行后输出: 1203 x=500y=500 Globalf->var=1000 21/2/24 9
2021/2/24 9 2. 友员成员函数可以访问并修改类的私有 或保护数据,调用类的私有或保护函数 使类不至于由于封装而增加了编程的复 杂性。 总的目标:使外部类的成员函数能访问修改类 的私有或保护数据、能调用类的私有或保护函 数。与友员类的区别是仅将部分成员函数声明 为友员,而不是整个类。 例3:把类作为友元。 执行后输出: 1203 x=500 y=500 GlobalF->var=1000

例3有关内容总结 1.定义了类F2是类F的友员,建立了 类之间的联系。使编程显得更便利 2.友员可以访问并修改类的私有和保护数 据,调用类的私有和保护函数,使类不 至于由于封装而增加了编程的复杂性。 总的目标:使外部类能访问修改类的私有或 保护数据、能调用类的私有或保护函数。 2021/224 10
2021/2/24 10 例3有关内容总结 1. 定义了类 F2是类 F 的友员,建立了 类之间的联系。使编程显得更便利。 2. 友员可以访问并修改类的私有和保护数 据,调用类的私有和保护函数,使类不 至于由于封装而增加了编程的复杂性。 总的目标:使外部类能访问修改类的私有或 保护数据、能调用类的私有或保护函数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 山东大学:《Visual C++程序设计》第13章 运算符重载(张晓如).ppt
- 山东大学:《Visual C++程序设计》第11章 继承和派生类(张晓如).ppt
- 山东大学:《Visual C++程序设计》第6章 数组(张晓如).ppt
- 山东大学:《Visual C++程序设计》第8章 指针和引用(张晓如).ppt
- 山东大学:《Visual C++程序设计》第5章 函数和编译预处理(张晓如).ppt
- 山东大学:《Visual C++程序设计》第2章 数据类型、运算符和表达式(张晓如).ppt
- 山东大学:《Visual C++程序设计》第9章 类和对象(张晓如).ppt
- 山东大学:《Visual C++程序设计》第3章 简单的输入/输出(张晓如).ppt
- 山东大学:《Visual C++程序设计》第7章 结构体、共同体 和枚举类型(张晓如).ppt
- 山东大学:《Visual C++程序设计》第1章 C++概述(张晓如).ppt
- 江苏科技大学电子信息学院计算机系:《VC++实验指导书》.doc
- 江苏科技大学电子信息学院计算机系:《VC++实验指导书》(计12个实验).doc
- 山东大学:高性能感应电机电流控制研究(硕士学位论文,程金路).pdf
- 《Photoshop CS3案例教程》项目四 制作图书封面——图像编辑.ppt
- 《Photoshop CS3案例教程》项目十二 制作下雪的圣诞节动画——动作与动画.ppt
- 《Photoshop CS3案例教程》项目十三 制作旅游网页界面——应用进阶.ppt
- 《Photoshop CS3案例教程》项目十一 制作折页广告——应用通道.ppt
- 《Photoshop CS3案例教程》项目十 制作茶叶包装盒——神奇的滤镜.ppt
- 《Photoshop CS3案例教程》项目六 打造精美电脑桌面——绘画与修饰工具.ppt
- 《Photoshop CS3案例教程》项目八 制作房地产广告——应用文字.ppt
- 山东大学:《Visual C++程序设计》第14章 输入/输出流类库(张晓如).ppt
- 山东大学:《Visual C++程序设计》第10章 构造函数和析构函数(张晓如).ppt
- 山东大学:《Visual C++程序设计》第4章 C++的流程控制语句(张晓如).ppt
- 《单片机相关电子图书资料》51单片机C编程.pdf
- 《单片机相关电子图书资料》精彩51单片机教程.pdf
- 《单片机相关电子图书资料》第十一章 PIC 单片机的 C 语言编程.pdf
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第10章 Visual C++编程实例.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第10讲 对象数组和指针及对象作为函数参数.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第11讲 静态成员及友元.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第12讲 派生类的概念.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第13讲 派生的构造函数和析构函数.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第14讲 多继承.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第15讲 赋值兼容.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第16讲 多态性与虚.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第17讲 抽象类.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第18讲 运算符重载.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第19讲 几种常见的运算符重载及类型转换函数.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第1讲 面向对象程序设计概述.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第20讲 模板.ppt
- 中国铁道出版社:《C++面向对象程序设计》课程教学资源(PPT课件讲稿)第21讲 用指针处理链表.ppt