我知道我可以使用函数指针。
有人可以解释为什么要使用它们以及如何使用它们吗?简短的示例代码对我非常有帮助。
一个简单的情况是这样的:根据您的业务逻辑,您有一系列操作(函数)。您有一个哈希函数,可以将输入问题减少到业务逻辑函数之一。干净的代码将具有一个函数指针数组,您的程序将从输入中推断出该数组的索引并调用它。
这是示例代码:
typedef void (*fn)(void) FNTYPE;
FNTYPE fn_arr[5];
fn_arr[0] = fun1; // fun1 is previously defined
fn_arr[1] = fun2;
...
void callMyFun(string inp) {
int idx = decideWhichFun(inp); // returns an int between 0 and 4
fn_arr[idx]();
}
当然,回调是最常见的用法。示例代码如下:
void doLengthyOperation(string inp, void (*callback)(string status)) {
// do the lengthy task
callback("finished");
}
void fnAfterLengthyTask(string status) {
cout << status << endl;
}
int main() {
doLengthyOperation(someinput, fnAfterLengthyTask);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)