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

📄 ptrtomember.cpp

📁 24学时攻克C++光盘源代码 深入浅出 方便实用
💻 CPP
字号:
 //Listing 20.9 Pointers to member functions 

 #include <iostream>

 

 enum BOOL {FALSE, TRUE};

 

 class Mammal

 {

 public:

     Mammal():itsAge(1) {  }

     virtual ~Mammal() { }

     virtual void Speak() const = 0;

     virtual void Move() const = 0;

 protected:

     int itsAge;

 };

 

 class Dog : public Mammal

 {

 public:

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

     void Move() const { std::cout << "Walking to heel...\n"; }

 };

 

 class Cat : public Mammal

 {

 public:

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

     void Move() const { std::cout << "slinking...\n"; }

 };

 

 class Horse : public Mammal

 {

 public:

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

     void Move() const { std::cout << "Galloping...\n"; }

 };

 

 int main()

 {

     void (Mammal::*pFunc)() const =0;

     Mammal* ptr =0;

     int Animal;

     int Method;

     bool fQuit = false;

 

     while (fQuit == false)

     {

         std::cout << "(0)Quit (1)dog (2)cat (3)horse: ";

         std::cin >> Animal;

         switch (Animal)

         {

         case 1: 

             ptr = new Dog; 

             break;

         case 2: 

             ptr = new Cat; 

             break;

         case 3: 

             ptr = new Horse; 

             break;

         default: 

             fQuit = true; 

             break;

         }

         if (fQuit)

             break;

 

         std::cout << "(1)Speak  (2)Move: ";

         std::cin >> Method;

         switch (Method)

         {

         case 1: 

             pFunc = Mammal::Speak; 

             break;

         default: 

             pFunc = Mammal::Move; 

             break;

         }

 

         (ptr->*pFunc)();

         delete ptr;

     }

     return 0;

 }

⌨️ 快捷键说明

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