问题描述
首先,我猜这完全是为了好玩,没有什么实际用途。
我正在尝试做的是。有 1 个函数,但我可以用不同的函数伪名称调用它。
所以而不是这样做:
calculate_result(int x,int y);
我也可以:
calculate_answer(int x,int y);
或者我什至可以这样做:
calculation(int x,int y);
所有这些都会导致相同的功能:
int calculate(int x,int y)
{
answer = x + y;
return answer;
}
所以
int main()
{
int num1 = 5;
int num2 = 5;
int output = (calculate_result(num1,num2) + calculate_answer(num1,num2) + calculation(num1,num2));
cout << output;
return 0;
}
我认为模板可以用于此目的吗? 有没有办法做到这一点?
解决方法
答案是:指向函数的指针。
#include <iostream>
using namespace std;
int calculate(int x,int y)
{
int answer = x + y;
return answer;
}
int main()
{
// calculate_answer can now be used as a synonym to calculate
auto calculate_answer = calculate;
cout << calculate_answer(3,4) << endl;
return 0;
}
,
一种可能的解决方案是使用在函数头文件下定义的 bind()。 下面是代码片段。
#include <iostream>
#include <functional> // for bind()
using namespace std;
int calculate(int x,int y)
{
return x + y;
}
int main()
{
int num1 = 5;
int num2 = 5;
auto calculate_result = bind(calculate,num1,num2);
auto calculate_answer = bind(calculate,num2);
auto calculation = bind(calculate,num2);
int output = (calculate_result() + calculate_answer() + calculation());
cout << output; //Prints 30 on console
return 0;
}