一个可以用多个函数伪名/同义词调用的函数

问题描述

首先,我猜这完全是为了好玩,没有什么实际用途。

我正在尝试做的是。有 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;
}