[C++] c++ 多继承 →→→→→进入此内容的聊天室

来自 , 2020-05-11, 写在 C++, 查看 103 次.
URL http://www.code666.cn/view/a3545bd7
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5.  
  6. class Horse {
  7. public:
  8.         Horse() {
  9.                 cout << "Horse constructor... ";
  10.         }
  11.         virtual ~Horse() {
  12.                 cout << "Horse destructor... ";
  13.         }
  14.         virtual void Whinny() const {
  15.                 cout << "Whinny!... ";
  16.         }
  17. private:
  18.         int itsAge;
  19. };
  20.  
  21. class Bird {
  22. public:
  23.         Bird() {
  24.                 cout << "Bird constructor... ";
  25.         }
  26.         virtual ~Bird() {
  27.                 cout << "Bird destructor... ";
  28.         }
  29.         virtual void Chirp() const {
  30.                 cout << "Chirp... ";
  31.         }
  32.         virtual void Fly() const {
  33.                 cout << "I can fly! I can fly! I can fly! ";
  34.         }
  35. private:
  36.         int itsWeight;
  37. };
  38.  
  39. class Pegasus: public Horse, public Bird {
  40. public:
  41.         void Chirp() const {
  42.                 Whinny();
  43.         }
  44.         Pegasus() {
  45.                 cout << "Pegasus constructor... ";
  46.         }
  47.         ~Pegasus() {
  48.                 cout << "Pegasus destructor... ";
  49.         }
  50. };
  51.  
  52. const int MagicNumber = 2;
  53. int main() {
  54.         Horse* Ranch[MagicNumber];
  55.         Bird* Aviary[MagicNumber];
  56.         Horse * pHorse;
  57.         Bird * pBird;
  58.         int choice, i;
  59.         for (i = 0; i < MagicNumber; i++) {
  60.                 cout << "\n(1)Horse (2)Pegasus: ";
  61.                 cin >> choice;
  62.                 if (choice == 2)
  63.                         pHorse = new Pegasus;
  64.                 else
  65.                         pHorse = new Horse;
  66.                 Ranch[i] = pHorse;
  67.         }
  68.         for (i = 0; i < MagicNumber; i++) {
  69.                 cout << "\n(1)Bird (2)Pegasus: ";
  70.                 cin >> choice;
  71.                 if (choice == 2)
  72.                         pBird = new Pegasus;
  73.                 else
  74.                         pBird = new Bird;
  75.                 Aviary[i] = pBird;
  76.         }
  77.  
  78.         cout << endl;
  79.         for (i = 0; i < MagicNumber; i++) {
  80.                 cout << "\nRanch[" << i << "]: ";
  81.                 Ranch[i]->Whinny();
  82.                 delete Ranch[i];
  83.         }
  84.  
  85.         for (i = 0; i < MagicNumber; i++) {
  86.                 cout << "\nAviary[" << i << "]: ";
  87.                 Aviary[i]->Chirp();
  88.                 Aviary[i]->Fly();
  89.                 delete Aviary[i];
  90.         }
  91.         return 0;
  92. }
  93.  

回复 "c++ 多继承"

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

captcha