欢迎来到天天文库
浏览记录
ID:59421083
大小:150.00 KB
页数:52页
时间:2020-09-19
《C面向对象程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章多态性1《面向对象技术与VisualC++》--第5章本章主要内容多态性的概念和多态类型联编虚函数抽象类运算符重载2《面向对象技术与VisualC++》--第5章5.1多态性的概念多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。多态的实现:函数重载运算符重载虚函数3《面向对象技术与VisualC++》--第5章5.2联编多态性的实现过程中,确定调用哪个同名函数的过程就是联编(binding),又称绑定。联编是指计算机程序自身彼此关联
2、的过程,也就是把一个函数名和一个函数体联系在一起的过程。按照联编进行的阶段的不同,可以分为静态联编和动态联编,这两种联编过程分别对应着多态性的两种实现方式。4《面向对象技术与VisualC++》--第5章5.2.1静态联编在编译阶段完成的联编称为静态联编。在编译过程中,编译系统可以根据类型匹配等特征来确定程序中调用操作与执行某个同名函数实现之间的关系,即确定某一个同名函数到底是要调用哪一段函数实现代码。函数重载和运算符重载就是通过静态联编方式实现的编译时的多态的体现。静态联编的优点是函数调用速度
3、快、效率较高,缺点是编程不够灵活5《面向对象技术与VisualC++》--第5章例5-1示例静态联编。//example51.cpp#includeclassStudent{public:voidprint(){cout<<"Astudent"<4、oidmain(){Students1,*ps;GStudents2;s1.print();s2.print();s2.Student::print();ps=&s1;ps->print();ps=&s2;ps->print();//希望调用对象s2的输出函数,但调用的却是对象s1的输出函数}运行结果:AstudentAgraduatestudentAstudentAstudentAstudent7《面向对象技术与VisualC++》--第5章5.2.2动态联编只有在运行程序时才能确定将要调用的5、函数。这种在运行阶段进行的联编称为动态联编。动态联编的优点是提供了更好的编程灵活性、问题抽象性和程序易维护性,缺点是与静态联编相比,函数调用速度慢。8《面向对象技术与VisualC++》--第5章5.3虚函数虚函数是动态联编的基础。是非静态的成员函数。在类的声明中,在函数原型之前写virtual。virtual只用来说明类声明中的原型,不能用在函数实现时。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。本质:不是重载声明而是覆盖。调用方式:通过基类指针或引用,执行6、时会根据指针指向的对象的类,决定调用哪个函数。9《面向对象技术与VisualC++》--第5章5.3.1虚函数的声明虚函数是一个在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。声明虚函数的格式如下:virtual<返回值类型><函数名>(<参数表>);10《面向对象技术与VisualC++》--第5章例5-2示例动态联编(采用对象指针调用虚函数)。//example52.cpp#includeclassStudent{public:virtua7、lvoidprint() //定义虚函数{cout<<"Astudent"<8、t::print();ps=&s1;ps->print();ps=&s2;ps->print();//对象指针调用虚函数,采用动态联编方式}运行结果:AstudentAgraduatestudentAstudentAstudentAgraduatestudent12《面向对象技术与VisualC++》--第5章例5-3示例动态联编(采用对象引用调用虚函数)。//example53.cpp#includeclassStudent{public:virtualvoidprin
4、oidmain(){Students1,*ps;GStudents2;s1.print();s2.print();s2.Student::print();ps=&s1;ps->print();ps=&s2;ps->print();//希望调用对象s2的输出函数,但调用的却是对象s1的输出函数}运行结果:AstudentAgraduatestudentAstudentAstudentAstudent7《面向对象技术与VisualC++》--第5章5.2.2动态联编只有在运行程序时才能确定将要调用的
5、函数。这种在运行阶段进行的联编称为动态联编。动态联编的优点是提供了更好的编程灵活性、问题抽象性和程序易维护性,缺点是与静态联编相比,函数调用速度慢。8《面向对象技术与VisualC++》--第5章5.3虚函数虚函数是动态联编的基础。是非静态的成员函数。在类的声明中,在函数原型之前写virtual。virtual只用来说明类声明中的原型,不能用在函数实现时。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。本质:不是重载声明而是覆盖。调用方式:通过基类指针或引用,执行
6、时会根据指针指向的对象的类,决定调用哪个函数。9《面向对象技术与VisualC++》--第5章5.3.1虚函数的声明虚函数是一个在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。声明虚函数的格式如下:virtual<返回值类型><函数名>(<参数表>);10《面向对象技术与VisualC++》--第5章例5-2示例动态联编(采用对象指针调用虚函数)。//example52.cpp#includeclassStudent{public:virtua
7、lvoidprint() //定义虚函数{cout<<"Astudent"<8、t::print();ps=&s1;ps->print();ps=&s2;ps->print();//对象指针调用虚函数,采用动态联编方式}运行结果:AstudentAgraduatestudentAstudentAstudentAgraduatestudent12《面向对象技术与VisualC++》--第5章例5-3示例动态联编(采用对象引用调用虚函数)。//example53.cpp#includeclassStudent{public:virtualvoidprin
8、t::print();ps=&s1;ps->print();ps=&s2;ps->print();//对象指针调用虚函数,采用动态联编方式}运行结果:AstudentAgraduatestudentAstudentAstudentAgraduatestudent12《面向对象技术与VisualC++》--第5章例5-3示例动态联编(采用对象引用调用虚函数)。//example53.cpp#includeclassStudent{public:virtualvoidprin
此文档下载收益归作者所有