C程序设计(4-12)

C程序设计(4-12)

ID:40840770

大小:970.51 KB

页数:96页

时间:2019-08-08

C程序设计(4-12)_第1页
C程序设计(4-12)_第2页
C程序设计(4-12)_第3页
C程序设计(4-12)_第4页
C程序设计(4-12)_第5页
资源描述:

《C程序设计(4-12)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计理学院信息与计算科学系杨波cookie_yb73@126.com第四部分高级编程第12章多态(Polymorphism)第12章多态1.继承召唤多态2.抽象编程的困惑3.多态性的概念4.虚函数5.避免虚函数误用6.精简共性的类7.多态编程8.类型转换1.继承召唤多态子类是父类的一种父类不是子类的一种常见父类与子类的操作指针父类指针操作父类对象(自然)子类指针操作子类对象(自然)父类指针操作子类对象(将子类看成父类的一种,安全)子类指针操作父类对象(将父类看成子类的一种,不合理,危险)引用父类引用作为父类对象别名(自然)子类引用作为子类对象别名(自然)父类引用作为子类对象别名(

2、将子类看成父类的一种,安全)子类引用作为父类对象别名(将父类看成子类的一种,不合理,危险)例12-1源代码e1201.cppintdgetA()DeriintbgetB()BaseDeridd1;Base*pbtr=&dd1;pbtr派生类对象作为基类对象合理裁去专属于派生类部分强制类型转换intdgetA()DeriintbgetB()BaseBasebb1;Deri*pdtr=(Deri*)&bb1;pdtr基类对象作为派生类对象不合理覆盖父类操作如果父类中有一个操作,在子类中没有重新定义,则子类可以沿用该操作,但都是父类操作。子类可以进行同名覆盖,进行子类操作例12-2源代码e120

3、2.cpp同化效应例12-3源代码e1203.cpp渴望多态设立一个学生缴费办公室,处理全校学生的缴费工作:classStudent{public:doublecalcTuition(){…}…};classGraduateStudent:publicStudent{public:doublecalcTuition(){…}…};classUnderGraduateStudent:publicStudent{Public:doublecalcTuition(){…}…};voidmain{UnderGraduateStudentus1,us2;GraduateStudentgs1,gs2;

4、??????}渴望多态设立一个学生缴费办公室,处理全校学生的缴费工作:classStudent{public:doublecalcTuition(){…}…};classGraduateStudent:publicStudent{public:doublecalcTuition(){…}…};classUnderGraduateStudent:publicStudent{Public:doublecalcTuition(){…}…};voidmain{UnderGraduateStudentus1,us2;GraduateStudentgs1,gs2;std::vector

5、*>v;v.push_back(&us1);v.push_back(&us2);v.push_back(&gs1);v.push_back(&gs2);for(inti=0;icalcTuition();}一个操作随着所传递或捆绑的对象类型的不同能够做出不同的反应,其行为模式称为多态渴望多态设立一个学生缴费办公室,处理全校学生的缴费工作:classStudent{public:doublecalcTuition(){…}…};classGraduateStudent:publicStudent{pub

6、lic:doublecalcTuition(){…}…};classUnderGraduateStudent:publicStudent{Public:doublecalcTuition(){…}…};voidmain{UnderGraduateStudentus1,us2;GraduateStudentgs1,gs2;std::vectorv;v.push_back(us1);v.push_back(us2);v.push_back(gs1);v.push_back(gs2);for(inti=0;i

7、dent&x){x.calcTuition();}一个操作随着所传递或捆绑的对象类型的不同能够做出不同的反应,其行为模式称为多态2.抽象编程的困惑类型域方案可以做到,即实现fn函数如下:voidfn(Student&x){switch(x.type){caseStudent::UNDERGRADUATESTUDENT:UnderGraduateStudent&ugsrx=static_cast

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。