close
看了網路上[1]有關Function Pointer, 感覺Function Pointer使用語法很累贅, 於是聯想到typedef來簡化
原本累贅的語法
double (*PtrFun)(double a, double b)
只要前面多加一個typedef, 呼叫上就會變得比較親民
typedef double (*PtrFun)(double a, double b)
例如我想要一個四則運算的功能
PtrFun p[4]{ OperatorAdd, OperatorSub, OperatorMul, OperatorDev };
宣告一個PtrFun資料型態,存放四個函式指標(即為函式名稱)
OperatorAdd, OperatorSub, OperatorMul, OperatorDev
1: #include "stdafx.h"
2: #include <stdio.h>
3: #include <iostream>
4:
5: typedef double (*PtrFun)(double a, double b);
6: using namespace std;
7: double OperatorAdd(double a, double b);
8: double OperatorSub(double a, double b);
9: double OperatorMul(double a, double b);
10: double OperatorDev(double a, double b);
11:
12: int main()
13: {
14: int i;
15: double a = 4, b = 2;
16: char* info[4] = { "+","-","x","/" };
17: PtrFun p[4]{ OperatorAdd, OperatorSub, OperatorMul, OperatorDev };
18: for (i = 0; i < 4; i++)
19: {
20: cout << a << info[i] << b << " = " << p[i](a, b) << endl;
21: }
22:
23: return 0;
24: }
25:
26: double OperatorAdd(double a, double b)
27: {
28: return a + b;
29: }
30: double OperatorSub(double a, double b)
31: {
32: return a - b;
33: }
34: double OperatorMul(double a, double b)
35: {
36: return a*b;
37: }
38: double OperatorDev(double a, double b)
39: {
40: double ret = (b == 0 ? 0 : a / b);
41: return ret;
42: }
參考資料
全站熱搜
留言列表