如何解决一个可以用多个函数伪名/同义词调用的函数
首先,我猜这完全是为了好玩,没有什么实际用途。
我正在尝试做的是。有 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。