include
using namespace std;
class CAnimal
{
public:
CAnimal()
{
printf(“CAnimal \n”);
}
virtual ~CAnimal()
{
printf(“~CAnimal\n”);
}
virtual void Eat()
{
printf("Animal::Eat()\n");
}
virtual void Sleep()
{
printf("Animal::Sleep()\n");
}
virtual void Fight()
{
printf(“Animal::Fight()\n”);
}
};
class CBird :public CAnimal
{
public:
CBird()
{
printf(“CBird\n”);
}
~CBird()
{
printf(“~CBird()\n”);
}
virtual void Eat()
{
printf(“Bird::Eat()\n”);
}
virtual void Sleep()
{
printf(“Bird Sleep()\n”);
}
};
总结和分析:
int main(int argc, char*argv[])
{
CAnimal *p = new CBird;//调用子类和父类的默认的构造函数
p->Eat();//发生了多态,调用子类的方法
p->Fight();//调用父类的方法
p->Sleep();//发生了多态,调用子类的方法
delete p;//析构函数不发生多态,调用父类和子类的析构的方法
system(“pause”);
return 0;
}