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

📄 passingptrfunction.cpp

📁 24学时攻克C++光盘源代码 深入浅出 方便实用
💻 CPP
字号:
 // Listing 20.7 Pointers to Functions as args
 #include <iostream>
 using namespace std; // this file uses std:: objects 

 void Square (int&,int&);
 void Cube (int&, int&);
 void Swap (int&, int &);
 void GetVals(int&, int&);
 void PrintVals(void (*)(int&, int&),int&, int&);

 int main()
 {
     int valOne=1, valTwo=2;
     int choice;
     bool fQuit = false;

     void (*pFunc)(int&, int&);

     while (fQuit == false)
     {
         cout << "(0)Quit (1)Change Values "
             << "(2)Square (3)Cube (4)Swap: ";
         cin >> choice;
         switch (choice)
         {
         case 1:
             pFunc = GetVals;
             break;
         case 2:
             pFunc = Square;
             break;
         case 3: 
             pFunc = Cube;
             break;
         case 4:
             pFunc = Swap;
             break;
         default:
             fQuit = true;
             break;
         }
         if (fQuit == true)
             break;
         PrintVals ( pFunc, valOne, valTwo);
     }
  
   return 0;
 }

 void PrintVals( void (*pFunc)(int&, int&),int& x, int& y)
 {
     cout << "x: " << x << " y: " << y << endl;
     pFunc(x,y);
     cout << "x: " << x << " y: " << y << endl;
 }

 void Square (int & rX, int & rY)
 {
     rX *= rX;
     rY *= rY;
 }

 void Cube (int & rX, int & rY)
 {
     int tmp;

     tmp = rX;
     rX *= rX;
     rX = rX * tmp;

     tmp = rY;
     rY *= rY;
     rY = rY * tmp;
 }

 void Swap(int & rX, int & rY)
 {
     int temp;
     temp = rX;
     rX = rY;
     rY = temp;
 }

 void GetVals (int & rValOne, int & rValTwo)
 {
     cout << "New value for ValOne: ";
     cin >> rValOne;
     cout << "New value for ValTwo: ";
     cin >> rValTwo; 
}

⌨️ 快捷键说明

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