- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计与算法语言(下).ppt
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
您可能关注的文档
最近下载
- 人教版初一上册《化学》模拟考试卷及答案【可打印】.docx VIP
- 《宴席设计实务》(肖炜)教案 第6课 为西式宴席设计酒水.docx VIP
- 塔吊驾驶员安全培训试题及答案.doc VIP
- ASME BPVC-VII-2017 锅炉及压力容器规范 第七卷:动力锅炉维护推荐指南 国外国际标准.pdf VIP
- GB_T 17671-2021水泥胶砂强度检验方法(ISO法).docx VIP
- 教育技术学教学课件-第十一章-教学系统设计.ppt VIP
- 高碳铬轴承钢退火缺陷组织及评级.pdf VIP
- 教育技术学教学课件-第二章-教育技术学的形成.ppt VIP
- 教育技术学教学课件-第七章-计算机教育应用.ppt VIP
- 教育技术学教学课件-第八章-网络教育应用.ppt VIP
文档评论(0)