《C++语言程序设计》课程教学课件(PPT讲稿)第13讲 多态

●●● ●●●●● 第13讲多态 ●●● 友员函数 ●多态性与虚函数 ●纯虚函数和抽象类
第13讲 多态 ⚫ 友员函数 ⚫ 多态性与虚函数 ⚫ 纯虚函数和抽象类

●●● ●●●●● 学习目标 ●●● ●掌握友元函数的定义和使用 ●理解多态的概念、多态性的分类 ●理解虚函数作用、什么情况下声明虚函数 ●理解纯虚函数、抽象类、虚析构函数的作用, 并掌握其使用 ●理解掌握动态多态性的实现
学习目标 ⚫ 掌握友元函数的定义和使用 ⚫ 理解多态的概念、多态性的分类 ⚫ 理解虚函数作用、什么情况下声明虚函数 ⚫ 理解纯虚函数、抽象类、虚析构函数的作用, 并掌握其使用 ⚫ 理解掌握动态多态性的实现

●●● ●●●●● 第12讲多态 ●●● 友员函数 ●多态性与虚函数 ●纯虚函数和抽象类
第12讲 多态 ⚫ 友员函数 ⚫ 多态性与虚函数 ⚫ 纯虚函数和抽象类

●●● ●●●●● 友元函数 ●●● 类中私有和保护的成员在类外不能被访问。 友元函数是一种定义在类外或类中的普通函数, 其特点是能够访问类中私有成员和保护成员,即 类的访问权限的限制对其不起作用。 友元函数不是成员函数,用法也与普通的函数完 全一致,只不过它能访问类中所有的数据。友元 函数破坏了类的封装性和隐蔽性,使得非成员函 数可以访问类的私有成员。 ●一个类的友元可以自由地用该类中的所有成员
友元函数 ⚫ 类中私有和保护的成员在类外不能被访问。 ⚫ 友元函数是一种定义在类外或类中的普通函数, 其特点是能够访问类中私有成员和保护成员,即 类的访问权限的限制对其不起作用。 ⚫ 友元函数不是成员函数,用法也与普通的函数完 全一致,只不过它能访问类中所有的数据。友元 函数破坏了类的封装性和隐蔽性,使得非成员函 数可以访问类的私有成员。 ⚫ 一个类的友元可以自由地用该类中的所有成员

友元函数需要在类体内进行说明,在前面加 上关键字 friend。 般格式为: friend FuncName(args>); 函数名 friend float volume(a &a); 关键字返回值类型 函数参数
第一章 VC集成开发 环境 5 友元函数需要在类体内进行说明,在前面加 上关键字friend。 一般格式为: friend FuncName(); friend float Volume(A &a); 关键字 返回值类型 函数名 函数参数

有关友元函数的使用,说明如下: 友元函数不是类的成员函数 友元函数近似于普通的函数,它不带 有this指针,因此必须将对象名或对 象的引用作为友元函数的参数,这样 才能访问到对象的成员
第一章 VC集成开发 环境 6 有关友元函数的使用,说明如下: 友元函数不是类的成员函数 友元函数近似于普通的函数,它不带 有this指针,因此必须将对象名或对 象的引用作为友元函数的参数,这样 才能访问到对象的成员

class at float x, y; 友元函数只能用对象 public 名引用类中的数据。 A (float a, float b x=a;y=b; j 成员函数 float Sumo return x+y;3 friend float Sum(a &a return axa y, 3 友元函数 私有数据 void main(void) {A1(4,5)2(10,20);成员西数的调用,利用对象名调用 cout<<t1 Sum(<<endl; c0ut<sum(t2)≤endl 友元函数的调用,直接调用
第一章 VC集成开发 环境 7 class A{ float x,y; public: A(float a, float b){ x=a; y=b;} float Sum(){ return x+y; } friend float Sum(A &a){ return a.x+a.y; } }; void main(void) { A t1(4,5),t2(10,20); cout<<t1.Sum()<<endl; cout<<Sum(t2)<<endl; } 友元函数 成员函数 友元函数的调用,直接调用 成员函数的调用,利用对象名调用 友元函数只能用对象 名引用类中的数据。 私有数据

●●● ●●●●● 友元函数与一般函数的不同点 ●●● 友元函数必须在类的定义中说明,其函数体 可在类内定义,也可在类外定义; 它可以访问该类中的所有成员(公有的、私 有的和保护的),而一般函数只能访问类中 的公有成员
友元函数与一般函数的不同点 ⚫ 友元函数必须在类的定义中说明,其函数体 可在类内定义,也可在类外定义; ⚫ 它可以访问该类中的所有成员(公有的、私 有的和保护的),而一般函数只能访问类中 的公有成员

class a float x, y public: A (float a, float b) x=a; y=b; 3 float Getxoi return x;) float Getyoi return y;}成员函数 float Sumo return X+y; friend float Sum(a &) 友元函数 普通函数,必须通过公有函数访问私有成员 float Sumxy(a &ai return a Getx(+a. Getyo; j float Sum(a &a) return a xtay;A void main(void) 友元函数,可以直接调用类中私有成员 Atl(1,2,t2(10,20),t3(100200) cout<<tl Sumo<<endl; 对象调用成员函数 cout<<Sum(t2)<<endl 调用友元函数 cout<<sumxy3) <endl;;、调用一般函数
9 class A{ float x,y; public: A(float a, float b){ x=a; y=b;} float Getx(){ return x; } float Gety(){ return y; } float Sum(){ return x+y; } friend float Sum(A &); }; float Sumxy(A &a){ return a.Getx()+a.Gety(); } float Sum(A &a){ return a.x+a.y; } void main(void) { A t1(1,2),t2(10,20), t3(100,200); cout<<t1.Sum()<<endl; cout<<Sum(t2)<<endl; cout<<Sumxy(t3)<<endl; } 成员函数 友元函数,可以直接调用类中私有成员 普通函数,必须通过公有函数访问私有成员 对象调用成员函数 调用友元函数 调用一般函数 友元函数

●●● ●●●●● 友元函数 ●●● 友元函数不受类中访问权限关键字的限制,可 以把它放在类的私有部分,放在类的公有部分 或放在类的保护部分,其作用都是一样的。换 言之,在类中对友元函数指定访问权限是不起 作用的。 ●友元函数的作用域与一般函数的作用域相同。 ●谨慎使用友元函数 ●通常使用友元函数来取对象中的数据成员值, 而不修改对象中的成员值,则肯定是安全的
友元函数 ⚫ 友元函数不受类中访问权限关键字的限制,可 以把它放在类的私有部分,放在类的公有部分 或放在类的保护部分,其作用都是一样的。换 言之,在类中对友元函数指定访问权限是不起 作用的。 ⚫ 友元函数的作用域与一般函数的作用域相同。 ⚫ 谨慎使用友元函数 ⚫ 通常使用友元函数来取对象中的数据成员值, 而不修改对象中的成员值,则肯定是安全的
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 山东大学:《人机交互技术》课程教学资源(PPT课件讲稿)第9章 可用性分析与评估.ppt
- 多媒体图像处理技术(PPT课件讲稿,共六章).ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计 4.5 各类指令详解.ppt
- 《微机原理》课程教学资源(PPT课件)第2章 微处理器与总线.ppt
- 《网页设计与制作》课程教学资源(PPT课件讲稿)第四章 设计页面布局.ppt
- 《网页设计与制作》课程教学资源(PPT课件讲稿)第七章 模板与库的应用.ppt
- 《单片机原理及应用》课程教学资源(PPT课件)第8章 AT89S51单片机外部存储器的扩展.ppt
- 《微机原理》课程教学资源(PPT课件)第六章 微型计算机的输入/输出.ppt
- 《计算机应用基础》课程教学资源(PPT课件讲稿)第3章 Word 2007文字处理.ppt
- 中国铁道出版社:《局域网技术与组网工程》课程教学资源(PPT课件讲稿)第7章 网络系统集成与网络维护.ppt
- 西安交通大学:《微型计算机接口技术》课程教学资源(PPT课件讲稿)第二章 微型处理器与单片机.ppt
- 长安大学:《微机原理》课程教学资源(PPT课件讲稿)第7章 汇编语言程序设计.pptx
- 《数字图像处理基础》课程教学资源(教学大纲.pdf
- 《数据库基础与Access应用》课程教学资源(PPT课件)第12章 应用实例.pptx
- 《数据库基础与应用》课程PPT教学课件(Access案例教程)第8章 宏.pptx
- 《数据库基础与应用》课程PPT教学课件(Access案例教程)第9章 数据库语言SQL.pptx
- 上海交通大学:《现代操作系统》课程教学资源(PPT课件讲稿)Chapter 02 进程与线程 Process and Thread.pps
- 上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第5章 批量数据处理——数组.ppt
- 上海交通大学:Scheduling Algorithms in Heterogeneous Computing Systems.pptx
- 北京理工大学:《软件工程基础》课程教学资源(PPT课件讲稿)需求工程(主讲:刘驰).ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第八章 I/O操作的实现.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第七章 语义分析和中间代码生成.ppt
- 山东大学计算机科学与技术学院:Web Service(PPT讲稿).ppt
- 《Android 程序设计基础》课程教学资源(PPT课件讲稿)第5章 Android用户界面(界面设计、控件操作).ppt
- 山东大学:《数据结构》课程教学资源(PPT课件讲稿)第7章 跳表和散列(Skip List and Hashing).ppt
- 文字处理软件 Word 2010(PPT讲稿).pptx
- 烟台理工学院:《算法与数据结构》课程教学资源(PPT课件)第1章 绪论(主讲:高慧).ppt
- 《大学计算机基础》课程教学资源(PPT课件讲稿)第三章 字处理软件Word 2003.ppt
- Enabling SOA Using Messaging(PPT讲稿).ppt
- Folksonomies and Social Tagging(PPT讲稿).ppt
- 兰州大学:搜索引擎的使用(PPT讲稿,主讲 杨青).ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第7章 图(主讲:刘东).pptx
- 《计算机算法设计与分析》课程教学资源(PPT课件讲稿)分支界限法.ppt
- 电子工业出版社:《计算机网络》课程教学资源(PPT课件讲稿)第1章 概述.pptx
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 3 Applying Your Testing Skills.ppt
- 《编译原理与技术》课程教学资源(PPT课件讲义)中间代码生成.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第六章 中间代码生成.ppt
- 合肥工业大学:《网络安全概论》课程教学资源(PPT课件讲稿)第一讲 网络安全概述.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第五章 存储层次.ppt
- 南京大学:移动Agent系统支撑(PPT讲稿)Mobile Agent Communication——Software Agent.pptx