- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八单元多态性
* * * * * * * * * * * * * * * * * * * 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。 这种确定操作的具体对象的过程就是绑定 绑 定 * 1、编译时多态(静态绑定) 指在编译的过程中确定了同名操作的具体操作对象 2、运行时多态(动态绑定) 指在程序运行过程中才动态地确定操作所针对的具体对象。 * 静态绑定 缺点:不经过重新编译程序就无法实现静态绑定。 动态绑定 无需重新编译程序就能够实现动态绑定,不足是时间开销稍大于静态绑定。 两种绑定的优缺点 * 静态绑定举例 兔子逃生 问题引出: Class 兔子 {public: ……... void 逃生(老鹰 a){“兔子蹬鹰”;} void 逃生(狼 b){“动若脱兔”;} …………….. }; 调用函数时,它们的参数都在编码时设定好的,也就是当调用“兔子”类的逃生函数时,传入的参数时“老鹰”还是“狼”的对象,是在编译时确定的。 * 投石探宠物 动态绑定举例 问题引出: 一个小孩得知邻居院子里养了一个宠物,当不知道是何物,于是丢一块石头到邻居院中探明真相。 Class 宠物 {public: void char *speak{cout“zzz”;} …}; Class 狗:public 宠物 {public: void char *speak{cout“miao!miao!”;} …}; Class 猫:public 宠物 {public: void char *speak{cout“miao!miao!”;} …}; void main() {宠物 *p; 猫 cat1; 狗 dog1; ….//此处设计程序用户根据输入将猫或 ….//狗对象地址赋给p指针 ….//例如,输入1:p=cat1,输入2:p=dog1 p-speak( ); } * 虚函数 虚函数是动态绑定的基础。 虚函数的语法: virtual 函数返回类型 函数名(参数表) 说明: 1、非静态的成员函数。 2、在类的声明中,在函数原型之前写virtual。 3、virtual 只用来说明类声明中的原型,不能用在函数实现时。 虚 函 数 虚函数举例 1、未使用虚函数 2、使用虚函数 #include iostream using namespace std; // 1、未使用虚函数 class pet {public: void speak() {cout“How does a pet speakendl;} }; class Cat: public pet { public: void speak(){ cout“miao!miao!endl; } }; class Dog: public pet { public: void speak(){ cout“wang!wang!endl; } }; void main() //主函数 { pet *p1,*p2,*p3,obj; dog dog1; cat cat1; obj.speak( ); p1=cat1; p1-speak(); p2=new cat; p2-speak(); p3=new dog; p3-speak(); pet p4=cat1; p4- speak(); } * How does a pet speak How does a pet speak How does a pet speak How does a pet speak How does a pet speak How does a pet speak 输出结果: #include iostream using namespace std; // 2、使用虚函数 class pet {public: virtual void speak() {cout“How does a pet speakendl;} }; class Cat: public pet { public: void speak(){ cout“miao!miao!endl; } }; class D
文档评论(0)