《多态性和虚函数》PPT课件

《多态性和虚函数》PPT课件

ID:39465857

大小:887.60 KB

页数:91页

时间:2019-07-04

《多态性和虚函数》PPT课件_第1页
《多态性和虚函数》PPT课件_第2页
《多态性和虚函数》PPT课件_第3页
《多态性和虚函数》PPT课件_第4页
《多态性和虚函数》PPT课件_第5页
资源描述:

《《多态性和虚函数》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、多态性和虚函数第05章主要内容5.2虚函数5.4运算符重载5.3纯虚函数和抽象类5.1重载与覆盖什么是多态性?在C++中通过重载、覆盖、运算符重载、虚函数等技术,使得基类和派生类中可以出现同名的成员函数。不同的成员函数被调用时表现出不同的行为,表现出很强的灵活性,称为多态性。成员函数重载成员函数覆盖虚函数运算符重载静态多态性和动态多态性静态多态性:编译时的多态性,成员函数重载、覆盖、运算符重载都属于静态多态性。编译器根据实参数据类型或对象的数据类型,在编译时就确定调用哪个函数。动态多态性:运行时多态性,通过虚函数来实现。通过虚函数实现的动态多

2、态性,在代码执行的过程中决定调用哪个函数。1、成员函数重载和覆盖重载:同一个类中,存在名称相同但“签名不同”的成员函数(函数参数类型或个数不同),编译时根据实参类型确定调用的是哪个版本的函数。覆盖:派生类和基类存在名称相同的成员函数,实现派生类方法覆盖(改造)基类方法的功能。如果要访问基类被覆盖方法,需要使用类名前缀。2、成员函数重载classInter{intnum;public:Inter(inta){num=a;}voidSetNum(inta){num=a;}voidSetNum(doublea){num=int(a+0.5);}vo

3、idshow(){cout<

4、rn0;}};覆盖技术classCircle:publicPoint{doubleradius;public:Circle(doublea,doubleb,doubler):Point(a,b){radius=r;}doublearea(){returnPI*radius*radius;}};覆盖技术voidmain(){Pointa(1.5,6.7);Circlec(1.5,6.7,2.5);cout<<“areaofa:”<

5、c;cout<<“areaofc:”<area()<area(),调用的是Point的成员函数,输出0。4、访问被覆盖的方法classCPoint{intx,y;public:CPoint(){x=0;y=0

6、;}CPoint(inta,intb){x=a;y=b;}voidSet(inta,intb){x=a;y=b;}voidShow(){cout<

7、::Show();}};访问被覆盖的方法voidmain(){Circlec(3,4,5);c.Show();c.Set(5,6,7);c.Show();c.CPoint::Set(7,8);c.CPoint::Show();}间接调用基类成员函数限定调用基类成员,不好!运行结果5,3,47,5,67,8主要内容5.2虚函数5.4运算符重载5.3纯虚函数和抽象类5.1重载与覆盖1、为什么要运行时多态?classMammal{intage;doubleweight;public:Mammal(inta,doublew){age=a;weight

8、=w;}voidShout(){cout<<“I’mamammal.”;}};为什么要运行时多态?classDog:publicMammal{public:Do

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

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

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