⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multivirtual.cpp

📁 24学时攻克C++光盘源代码 深入浅出 方便实用
💻 CPP
字号:
 //Listing 17.2 Multiple virtual member functions called in turn
 #include <iostream>

 class Mammal
 {
 public:
     Mammal():itsAge(1) {  }
     ~Mammal() { }
     virtual void Speak() const { std::cout << "Mammal speak!\n"; }
 protected:
     int itsAge;
 };

 class Dog : public Mammal
 {
 public:
     void Speak()const { std::cout << "Woof!\n"; }
 };


 class Cat : public Mammal
 {
 public:
     void Speak()const { std::cout << "Meow!\n"; }
 };


 class Horse : public Mammal
 {
 public:
     void Speak()const { std::cout << "Winnie!\n"; }
 };

 class Pig : public Mammal
 {
 public:
     void Speak()const { std::cout << "Oink!\n"; }
 };

 int main()
 {
     Mammal* theArray[5];
     Mammal* ptr;
     int choice, i;
     for ( i = 0; i<5; i++)
     {
         std::cout << "(1)dog (2)cat (3)horse (4)pig: ";
         std::cin >> choice;
         switch (choice)
         {
         case 1:
             ptr = new Dog;
             break;
         case 2:
             ptr = new Cat;
             break;
         case 3:
             ptr = new Horse;
             break;
         case 4:
             ptr = new Pig;
             break;
         default:
             ptr = new Mammal;
             break;
         }
         theArray[i] = ptr;
     }
     for (i=0;i<5;i++)
         theArray[i]->Speak();
     return 0;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -