- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9. 4.2 纯虚函数 9.4.2 纯虚函数 C++编译器约定: 建立一个对象时,如果这个对象含有从虚基类继承来的成员,则虚基类的成员由最终派生类的构造函数通过调用虚基类的构造函数进行初始化的。 该派生类的其他基类对虚基类构造函数的调用都自动被忽略。 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 b0; B1 b1; D1 d1; B0 *p; p=b0; fun(p); p=b1; fun(p); p=d1; fun(p); } P-display(); P-display(); P-display(); B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=b0; fun(p); } B0 * p b0 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=b1; fun(p); } B0 * p b1 B0类 void display(); B1类 D1类 void display(); void display(); 类的派生关系图 b0 b1 d1 void fun(B0 * ptr) { ptr-display();} void main() { B0 *p; p=d1; fun(p); } B0 * p d1 9.4 多态性与虚函数 多态性 编译时 运行时 函数重载 运算符重载 虚函数 函数重载:根据函数调用时所给的实参类型和数量,在程 序运行前就知道应该调用哪一个函数。 运算符重载:根据运算对象的不同,在编译时就可确定执 行什么样的运算。 运行时的多态性:指在程序执行前,无法根据函数名和参 数来确定该调用哪一个函数,必须在程 序执行过程中,根据执行的具体情况来 动态地确定。 9.4 多态性与虚函数 9.4.1 虚函数的定义 9.4.2 纯虚函数 9.4.1 虚函数的定义 为了让基类指针指向派生类对象时能使用基类指针调用派生类的同名同参数成员函数,C++引入了虚拟成员函数。 Why? 根据赋值兼容规则,派生类的对象可以代替基类对象。如果用基类类型的指针指向派生类对象,可以通过这个指针访问该对象,但访问到的只是从基类继承来的同名成员。 9.4.1 虚函数的定义 一、虚函数的定义格式 定义虚函数的格式: virtual 返回类型 函数名(参数表); virtual 关键字该成员函数为虚函数 也是一个类的成员函数 析构函数可定义为虚函数,构造函数不能定义虚函数。 9.4.1 虚函数的定义 【例9.8】虚函数怎样实现多态性: #includeiostream.h class B0{ public: virtual void display() {coutB0::display()endl;} }; //基类B0声明 class B1:public B0 { public: virtual void display() {coutB1::display()endl;} }; virtual仅用于类定义中,如虚函数在类外定义,不可加virtual; 派生类中重定义虚函数必须与基类中的虚函数同名外,还必须同参数表,同返回类型。 9.4.1 虚函数的定义 class D1:public B1 { public: void display() {coutD1::display()endl;} }; 当某一个类的一个成员函数被定义为虚函数,则由该类派生出来的所有派生类中,该函数始终保持虚函数的特征。 B0类 vo
您可能关注的文档
- 信用卡产品与服务.ppt
- 增值税最新政策学习 (3).ppt
- 山东省安全生产培训质量控制标准化规范.doc
- 大数定理与中心极限定理.ppt
- 生产与运作管理课程课件 (2).ppt
- 食品输送机械与设备.ppt
- 智能仪器仪表总线接口技术.ppt
- 合同磋商与合同订立.ppt
- 2011年公资料大全.doc
- 压力控制的技巧.ppt
- 《GB/T 32151.42-2024温室气体排放核算与报告要求 第42部分:铜冶炼企业》.pdf
- GB/T 32151.42-2024温室气体排放核算与报告要求 第42部分:铜冶炼企业.pdf
- GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法.pdf
- 中国国家标准 GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法.pdf
- 《GB/T 38048.6-2024表面清洁器具 第6部分:家用和类似用途湿式硬地面清洁器具 性能测试方法》.pdf
- 《GB/T 18238.2-2024网络安全技术 杂凑函数 第2部分:采用分组密码的杂凑函数》.pdf
- GB/T 18238.2-2024网络安全技术 杂凑函数 第2部分:采用分组密码的杂凑函数.pdf
- 《GB/T 17215.686-2024电测量数据交换 DLMS/COSEM组件 第86部分:社区网络高速PLCISO/IEC 12139-1配置》.pdf
- GB/T 13542.4-2024电气绝缘用薄膜 第4部分:聚酯薄膜.pdf
- 《GB/T 13542.4-2024电气绝缘用薄膜 第4部分:聚酯薄膜》.pdf
文档评论(0)