- 5
- 0
- 约9.4千字
- 约 39页
- 2018-01-25 发布于浙江
- 举报
ch13多态C教学课件
C++实用教程 第13章 多态 目录 13.1 多态和虚函数 13.2 运算符重载 13.3 典型运算符重载 13.4 综合应用实例 13.1.1 多态概述 多态(Polymorphism),是指不同类型的对象接收相同的消息时产生不同的行为。 消息主要是指对类的成员函数的调用 不同的行为是指成员函数的不同实现 在C++中,多态可分为两种:编译时的多态和运行时的多态。 编译时的多态通过函数的重载或运算符的重载实现 运行时的多态通过继承和虚函数实现 编译方式:静态(早期)联编和动态(晚期)联编(binding,又称绑定)。 [例Ex_PolyFunc] 多态函数的静态联编示例 #include iostream using namespace std; class CShape { public: float area() { return 0.0;} }; class CTriangle : public CShape { public: CTriangle(float h = 0, float w = 0) { H = h; W = w;} float area() {return (float)(H * W * 0.5); } private: float H, W; }; class CCircle : public CShape { public: CCircle(float r = 0) {R = r;} float area() {return (float)(3* R * R);} private: float R; }; int main() { CTriangle tri( 3, 4 ); couttri.area() = tri.area()endl; CCircle cir(5); coutcir.area() = cir.area()endl; CShape *s1 = tri; couts1-area()=s1-area()endl; CShape s2 = cir; couts2.area() = s2.area()endl; return 0; } 静态多态性 (静态绑定、先期捆绑) 通过函数重载实现。 函数重载的两种方式: 在同一类中重载:同名的成员函数,根据参数等不同,自动予以区别。 基类成员在派生类中的重载。 13.1.2 虚函数机制 虚函数是用关键字virtual来修饰的基类中的public和protected成员函数。 在派生类中定义后,就在此类层次中具有了该成员函数的不同版本。 在程序执行过程中,依据基类对象指针所指向的派生类对象,或通过基类引用对象所引用的派生类对象,就能确定哪一个版本被激活了,从而实现动态联编。 说明 虚函数只能是类的成员函数,不能是友元函数,也不能是静态成员函数。 静态成员函数没有this指针,不受限于某个对象。 可把析构函数定义为虚函数,但不能将构造函数定义为虚函数。 虚函数在派生类重新定义时参数个数、类型及函数类型必须和基类中的虚函数完全匹配。 虚函数派生下去仍是虚函数,且可省略virtual关键字。 class Base { public: void fn() { cout In Base\n; } }; class Sub : public Base { public: void fn() { cout In Sub\n; } }; void test ( Base b) { b.fn(); } int main(){ Base bc; Sub sc; test(bc); test(sc); } [例Ex_VirtualFunc] 虚函数的动态联编示例 #include iostream using namespace std; class CShape { public: virtual float area() { return 0.0;} }; class CTriangle : public CShape { public: CTriangle(float h = 0, float w = 0) { H = h; W = w;} float area() {return (float)(H * W * 0
您可能关注的文档
最近下载
- 2025年最新部编版五年级语文下册1-8单元教材分析(全册) .pdf VIP
- 山东省烟台龙口市(五四制)2024-2025学年六年级上学期期末考试历史试题.pdf VIP
- 青少年编程:NOIP CSP 初赛篇.pdf VIP
- 2024年河南豫能控股股份有限公司招聘笔试真题汇总.docx VIP
- 小学科学教育三年规划实施方案.docx VIP
- 视频会议摄像机安装指导书.docx VIP
- 波束匹配-5G网络自适应技术.doc VIP
- 2025年河南豫能控股股份有限公司招聘考试笔试试题(含答案).docx VIP
- 急性心肌梗死PBL教学指南:临床思维培养与典型案例实战解析.pptx VIP
- iso9000实战大全iso9001教材iso9000培训讲义iso9000简述.pptx VIP
原创力文档

文档评论(0)