关于多态的事例:
/* 多态的效果
由于程序运行不可能预测到用户输入哪个数字,因此不可能预先知道要调用哪个
对象的函数,指针p是在我们输入一个数时才指向某个对象的。这就叫做动
态联编或者运行时联编,相返假如在运行之前就确定好了哪个指针指向哪个
对易县,而且在运行时不能更改的叫静态联编或者编译时联编。静态联编由于
对象不用对自身进行跟踪,由此速度浪费比较小,而动态联编虽然可以动态
追踪对象,灵活性比较强,但是速度浪费也很严重,这就是两者的区别。
*/
#include<iostream>
using namespace std;
class poser
{
public:
virtual void beat()const{ cout<<"一般选手的力量为260磅\n";}
protected:
// int age;
};
class Ali:public poser
{
void beat()const{cout<<"阿里一拳的力量为420磅\n";}
};
class Lewis:public poser
{
void beat()const{cout<<"刘易斯一拳的力量为480磅\n";}
};
class Tyson:public poser
{
void beat()const{cout<<"泰森一拳的力量为500磅\n";}
};
class Holy:public poser
{
void beat()const{cout<<"霍利菲尔德一拳的力量为350磅\n";}
};
int main()
{
poser *p1[5];
poser *p;
int choice,i;
for(i=0;i<5;i++)
{
cout<<"(1)阿里(2)刘易斯(3)泰森(4)霍利菲尔德\n";
cout<<"请输入选手的编号:";
cin>>choice;
switch(choice)
{
case 1:
p=new Ali;
break;
case 2:
p = new Lewis;
break;
case 3:
p = new Tyson;
break;
case 4:
p = new Holy;
break;
default:
p = new poser;
break;
}
p1[i] = p;
//p->beat();
p1[i]->beat();
}
return 0;
}