淘豆网
1/37
下载文档
文档分类:幼儿/小学教育 > 幼儿教育

第14章多态.ppt


下载后只包含 1 个 PPT 格式的文档,里面的视频和音频不保证可以播放,查看文件列表
0/100
您的浏览器不支持进度条
更多>>该用户其他文档
下载所得到的文件列表
第14章多态.ppt
文档介绍:
第14章多态.ppt第14章多态-*-本章内容安排多态的概念虚函数实现多态虚函数机制纯虚函数与抽象类-*-赋值兼容性规则每一个派生类的对象,都是基类的一个对象。赋值兼容规则是指在公有派生情况下,一个公有派生类的对象可以当作基类的对象使用,反之则禁止。派生类的对象可以赋值给基类对象。派生类的对象可以初始化基类的引用。指向基类的指针也可以指向派生类。通过基类对象名、指针只能使用从基类继承的成员-*-派生类对象赋值给基类对象Mammalm(3,5);Dogd(2,3,LAB);m=d;通过m不能访问或间接访问breed成员mageweight223d2ageweight3LABbreed-*-基类对象赋值给派生类对象Mammalm(2,3);Dogd(3,4,LAB);d=m;Xm2ageweight3d2ageweight3breed?-*-派生类对象初始化基类引用Dogd(2,3,LAB);Mammal&rd=d;虽然rp是c的引用,但只能访问基类部分数据和方法d2ageweight3LABbreedrd-*-派生类对象地址赋值基类指针Dogd(2,3,LAB);Mammal*pd=&d;//基类指针可指向派生类对象通过pd只能访问基类部分的数据和接口d2ageweight3LABbreedpd-*-Mammal基类classMammal{public:Mammal():age(1) {cout<<"Mammalconstructor...\n";} ~Mammal(){cout<<"Mammaldestructor...\n";} voidspeak()const {cout<<"Mammalspeak!\n";} voidmove()const {cout<<"Mammal,moveonestep\n";}protected:intage;};-*-Dog类classDog:publicMammal{public:Dog(){cout<<"Dogconstructor...\n";}~Dog(){cout<<"Dogdestructor..\n";}voidwagTail(){cout<<"Waggingtail...\n";}voidspeak()const{cout<<"Woof!\n";}voidmove()const {cout<<"Dogmoves5steps...\n";}};Dog类中重写了speak和move方法,同时增加了wagTail方法。-*-测试程序intmain(){Mammal*pDog=newDog;pDog->move();pDog->speak(); deletepDog; pDog=NULL;return0;}在堆中创建Dog对象,使用Mammal类指针pDog指向它。因为pDog的类型为Mammal指针类型,会调用Mammal类的move和speak方法。编译时期进行的函数调用绑定。尽管pDog指向的是Dog对象,但只能调用基类方法。 内容来自淘豆网www.taodocs.com转载请标明出处.