iT邦幫忙

0

C++函式指標陣列的用法

c++ c
  • 分享至 

  • xImage
  •  

使用「函式指標陣列(Array of Function Pointers)」來儲存多個函式的位址,再透過陣列索引選擇要執行的函式。

int Add(int a, int b)
{
    return a + b;
}

int Sub(int a, int b)
{
    return a - b;
}

int Mul(int a, int b)
{
    return a * b;
}

/* 宣告函式指標陣列
   funcs 是一個陣列,陣列的每個元素都是函式指標。
   { Add, Sub, Mul } 將三個函式放進陣列,依序對應索引 0、1、2。
*/
int (*funcs[])(int, int) = { Add, Sub, Mul };

int _tmain(int argc, _TCHAR* argv[])
{
  //透過索引呼叫函式
  cout << funcs[0](10 ,20) << endl;   // 10+20
  cout << funcs[1](10 ,20) << endl;   // 10-20
  cout << funcs[2](10 ,20) << endl;   // 10*20
  return 0;
}

為什麼要使用函式指標陣列?
假設你要根據使用者選擇的運算執行不同函式。
傳統方式可能寫成:

if (choice == 0)
    result = Add(10, 5);
else if (choice == 1)
    result = Sub(10, 5);
else if (choice == 2)
    result = Mul(10, 5);

使用函式指標陣列後,可以簡化成:
result = funcs[choice](10, 5);

當然,實際程式必須先確認 choice 的範圍是 0 到 2,否則可能存取陣列之外的元素。
主要優點: 當函式數量很多,而且函式具有相同的參數與回傳型別時,可以用索引選擇函式,減少大量的 if-else 或 switch。
這種技巧常用於:

  • 計算器的運算選擇。
  • 命令分派(Command Dispatch)。
  • 狀態機(State Machine)。
  • 回呼函式(Callback)。

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言