[C++] c++ 多态性 (动物) →→→→→进入此内容的聊天室

来自 , 2019-10-18, 写在 C++, 查看 111 次.
URL http://www.code666.cn/view/645098b0
  1. #include <iostream>
  2. using namespace std;
  3. class Animal
  4. {
  5. public:
  6.         Animal ( int );
  7.         virtual ~Animal() {cout<<"析构动物...\n";}
  8.         virtual int GetAge() {return itsage;}
  9.         virtual void Sleep() =0;
  10.         virtual void Propagate() =0;
  11.         virtual void Move() =0;
  12.         virtual void Body() =0;
  13.         virtual void Eat() =0;
  14.         virtual void Show() =0;
  15. private:
  16.         int itsage;
  17. };
  18. Animal::Animal ( int age ) :itsage ( age )
  19. {
  20.         cout<<"创建动物...\n";
  21. }
  22. class Mammalia:public Animal
  23. {
  24. public:
  25.         Mammalia ( int age ) :Animal ( age )
  26.         {
  27.                 cout<<"创建哺乳类...\n";
  28.         }
  29.         virtual ~Mammalia()
  30.         {
  31.                 cout<<"析构哺乳类...\n";
  32.         }
  33.         virtual void Propagate()
  34.         {
  35.                 cout<<"哺乳类是胎生动物,通过胚胎来繁殖后代。\n";
  36.         }
  37. };
  38. class Bird:public Animal
  39. {
  40. public:
  41.         Bird ( int age ) :Animal ( age )
  42.         {
  43.                 cout<<"创建鸟类...\n";
  44.         }
  45.         virtual ~Bird()
  46.         {
  47.                 cout<<"析构鸟类...\n";
  48.         }
  49.         virtual void Sleep()
  50.         {
  51.                 cout<<"鸟类喜欢站着睡觉。\n";
  52.         }
  53.         virtual void Eat()
  54.         {
  55.                 cout<<"极个别鸟类吃肉,其他都是吃素。\n";
  56.         }
  57.         virtual void Propagate()
  58.         {
  59.                 cout<<"鸟类是卵生动物,通过排卵来繁殖后代。\n";
  60.         }
  61.         virtual void Move()
  62.         {
  63.                 cout<<"鸟类可以飞...\n";
  64.         }
  65.         virtual void Body()
  66.         {
  67.                 cout<<"鸟类体表被覆羽毛,前肢变为翼!\n";
  68.         }
  69.         virtual void Show()
  70.         {
  71.                 cout<<"鸟类的一般寿命为:"<<GetAge() <<"年"<<endl;
  72.         }
  73. };
  74. class Human:public Mammalia
  75. {
  76. public:
  77.         Human ( int age ) :Mammalia ( age )
  78.         {
  79.                 cout<<"创建人类...\n";
  80.         }
  81.         virtual ~Human()
  82.         {
  83.                 cout<<"析构人类...\n";
  84.         }
  85.         virtual void Sleep()
  86.         {
  87.                 cout<<"人类要在床上睡觉。\n";
  88.         }
  89.         virtual void Eat()
  90.         {
  91.                 cout<<"大多数人不吃生食。\n";
  92.         }
  93.         virtual void Propagate()
  94.         {
  95.                 cout<<"人类通过胚胎繁殖后代。\n";
  96.         }
  97.         virtual void Move()
  98.         {
  99.                 cout<<"人类靠两条腿走路...\n";
  100.         }
  101.         virtual void Body()
  102.         {
  103.                 cout<<"人类体表无毛!\n";
  104.         }
  105.         virtual void Show()
  106.         {
  107.                 cout<<"人类的一般寿命为:"<<GetAge() <<"年"<<endl;
  108.         }
  109. };
  110. class Pig:public Mammalia
  111. {
  112. public:
  113.         Pig ( int age ) :Mammalia ( age )
  114.         {
  115.                 cout<<"创建猪类...\n";
  116.         }
  117.         virtual ~Pig()
  118.         {
  119.                 cout<<"析构猪类...\n";
  120.         }
  121.         virtual void Sleep()
  122.         {
  123.                 cout<<"猪喜欢在烂泥里睡觉。\n";
  124.         }
  125.         virtual void Eat()
  126.         {
  127.                 cout<<"猪是杂食类动物。\n";
  128.         }
  129.         virtual void Propagate()
  130.         {
  131.                 cout<<"猪也通过胚胎繁殖后代。\n";
  132.         }
  133.         virtual void Move()
  134.         {
  135.                 cout<<"猪靠四条腿走路...\n";
  136.         }
  137.         virtual void Body()
  138.         {
  139.                 cout<<"猪体表被毛!\n";
  140.         }
  141.         virtual void Show()
  142.         {
  143.                 cout<<"猪因为要被人宰了吃,所以一般寿命为:"<<GetAge() <<"年"<<endl;
  144.         }
  145. };
  146. int main()
  147. {
  148.         Animal*p=0;
  149.         int choice=0;
  150.         bool quit=false;
  151.         while ( 1 )
  152.         {
  153.                 cout<<"(1)猪类(2)人类(3)鸟类(0)退出";
  154.                 cin>>choice;
  155.                 switch ( choice )
  156.                 {
  157.                 case 1:
  158.                         p=new Pig ( 1 );
  159.                         break;
  160.                 case 2:
  161.                         p=new Human ( 80 );
  162.                         break;
  163.                 case 3:
  164.                         p=new Bird ( 50 );
  165.                         break;
  166.                 default:
  167.                         quit=true;
  168.                         break;
  169.                 }
  170.                 if ( quit )
  171.                 {
  172.                         break;
  173.                 }
  174.                 p->Show();
  175.                 p->Eat();
  176.                 p->Propagate();
  177.                 p->Move();
  178.                 p->Sleep();
  179.                 p->Body();
  180.                 cout<<"\n";
  181.                 delete p;
  182.         }
  183.         return 0;
  184. }

回复 "c++ 多态性 (动物)"

这儿你可以回复上面这条便签

captcha