第八章多态性.pptVIP

  • 1
  • 0
  • 约9.08千字
  • 约 59页
  • 2023-11-27 发布于四川
  • 举报
* * * * * * * * * * * * * * * * * * * 多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。 这种确定操作的具体对象的过程就是绑定 绑 定 * 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)

1亿VIP精品文档

相关文档