#include<iostream>
using namespace std;
class Boxer
{
public:
Boxer(){}
Boxer(int a){ age = a;}
virtual void beat(){cout<<"一般拳手出拳力量为100"<<endl;}
protected:
int age;
};
class Jim : public Boxer
{
public:
Jim(){ age = 20; }
Jim(int a):Boxer(a){}
void beat(){cout<<"Jim年龄为"<<age<<"岁,出拳力量为150"<<endl;} //派生类中说明的基类虚函数也为虚函数
};
class Tom : public Boxer
{
public:
Tom(){ age = 23; }
Tom(int a):Boxer(a){}
void beat(){cout<<"Tom年龄为"<<age<<"岁,出拳力量为120"<<endl;}
};
class Mike : public Boxer
{
public:
Mike(){ age = 24; }
Mike(int a):Boxer(a){}
void beat(){cout<<"Mike年龄为"<<age<<"岁,出拳力量为140"<<endl;}
};
int main()
{
Boxer* p[3];
Boxer* temp;
int i,chose;
for(i=0;i<3;i++)
{
cout<<"1.Jim; 2,Tom; 3.Mike:";
cin>>chose;
switch(chose)
{
case 1:temp = new Jim; break; //动态连编
case 2:temp = new Tom; break;
case 3:temp = new Mike; break;
default:temp = new Boxer; break;
}
p[i] = temp;
p[i]->beat();
}
return 0;
}