
#include <iostream>
using namespace std;
class Animal
{
private:
string name;
public:
Animal(){}
Animal(string name):name(name)
{}
virtual void perfrom()
{}
virtual ~Animal()
{}
void show()
{
cout << name << ":";
}
};
template <typename performer >
class animal: public Animal
{
performer P;
public:
animal(){}
animal(string name,performer P):Animal(name),P(P)
{}
virtual void perfrom()
{ Animal::show();
cout << P << endl;
}
};
int main()
{
animal<string> a("老虎","在吃兔子");
Animal* P = &a;
P->perfrom();
animal<string> b("大象","在喷火");
P = &b;
P->perfrom();
animal<string> c("猴子","在上树");
P = &c;
P->perfrom();
return 0;
}
