该【面向对象第五章 】是由【小落意心冢】上传分享,文档一共【30】页,该文档可以免费在线阅读,需要了解更多关于【面向对象第五章 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。,可用相同的函数名实现功能不同的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数,实现不同情况下的不同操作。如下图所示。C++的多态性可使同一条消息,被不同类型的对象接收时将产生不同的行为。多态性是实现“一种接口,多种方法”的技术。这里的“一种接口”是指相同函数名和参数表,而“多种方法”是指多种函数实现,实现相似但不完全相同的功能。C++支持的多态可以分为两种类型:编译时多态:在同一个类或不同类中可用相同的函数名和不同的参数表来实现不同的功能操作,编译系统在编译阶段就可以根据调用函数的参数表来确定调用哪个同名函数。classpointer{intx,y;public:pointer(intcx,intcy){x=cx;y=cy;}pointer(constpointer&p){x=;y=;}……;};voidmain(){pointerob1(40,50);pointerob2=ob1;……}运行时多态:在类的继承层次结构中,不同层次的类中可能具有同名但实现不同的函数,需要在运行阶段才能根据对象所属的层次来确定调用哪个类中的同名函数。,把一个消息函数(())与一个对象的具体函数体相联系的过程叫做联编(binding)。按照联编时所处阶段的不同,可以把联编分为静态联编和动态联编,这两种联编过程分别对应着多态性的两种实现方式。,-1静态联编#include<>classStudent{public:voidprint(){cout<<“Astudent”<<endl;}voidprint(inta){cout<<a<<endl;}};classGStudent:publicStudent{public:voidprint(){cout<<“Agraduatestudent”<<endl;}};voidmain(){Students1,*ps;GStudents2;();();::print();ps=&s1;ps->print();ps=&s2;ps->print();}AstudentAgraduatestudentAstudentAstudentAstudentvoidmain(){Students1,*ps;GStudents2;();();::print();ps=&s1;ps->print();ps=&s2;ps->print();}AstudentAgraduatestudentAstudentAstudentAgraduatestudent
面向对象第五章 来自淘豆网www.taodocs.com转载请标明出处.