#include<iostream.h>
class Animal{
public:
 Animal(){
   //  cout<<"Animal Constructor........"<<endl; 
 
 }
    ~Animal(){
//  cout<<"Animal Destructor........."<<endl; 
 }
public:
 void eat(){
    cout<<"animal eating........."<<endl;
 }
    
 void sleep(){
 
   // cout<<"animal sleeping......."<<endl;
 }
//C++虚函数
public:
  virtual  void breath(){
 
     cout<<"animal breathing......"<<endl;
 }
};
class Fish : public Animal{
public:
 Fish(){
      //cout<<"Fish Constructor.........."<<endl;
 
 }
 ~Fish(){
    // cout<<"Fish Destructor..........."<<endl;
 }
 void test(){
    breath();
 }
 void breath(){
    cout<<"Fish bubbule........"<<endl;
 }
};

void main(){
 //Animal animal;
 //animal.eat();
 //Fish fish;
 //fish.breath();
 Animal * animal;
 Fish fish;
 animal=&fish;
//如果父类有虚函数存在 子类必须实现父类的虚函数 
//子类的实现虚函数 属于后期绑定 也就是在程序运行时才
//会检查对象的类型 这样此处最后指向的对象是Fish
 animal->breath();
}