21xrx.com
2024-12-23 00:44:23 Monday
登录
文章检索 我的文章 写文章
C++:将函数作为参数传递
2023-07-05 09:17:45 深夜i     --     --
C++函数参数传递 函数指针 函数对象 Lambda表达式 高阶函数

C++中,函数可以作为参数传递给其他函数。这种方式被称为函数指针或函数引用。C++的函数指针可以让我们更加灵活地使用函数,从而实现更加复杂的操作。下面介绍一下如何使用C++中的函数指针。

首先,我们需要定义一个函数指针类型。这可以通过typedef关键字来实现。例如,我们定义一个函数指针类型为void(*)(int),表示一个无返回值,一个整型参数的函数指针。我们还可以定义一个函数指针类型为int(*)(int, int),表示一个返回值为整型,两个整型参数的函数指针。

接下来,我们可以将一个函数名作为函数指针传递给另外一个函数。例如,我们定义了一个名为foo的函数,它接受一个函数指针作为参数。我们也定义了一个名为bar的函数,它接受一个整型参数和一个函数指针作为参数。我们可以在函数bar中调用函数指针,如下所示:

int add(int a, int b) // 定义一个加法函数

{

  return a+b;

}

void foo(int (*fun)(int, int)) // 定义一个接受函数指针的函数

{

  int res = fun(1, 2); // 调用函数指针

  std::cout << "Result is " << res << std::endl;

}

void bar(int a, int (*fun)(int, int)) // 定义一个接受整型参数和函数指针的函数

{

  int res = fun(a, 2); // 调用函数指针

  std::cout << "Result is " << res << std::endl;

}

int main()

{

  foo(add); // 将函数名add作为参数传递给函数foo

  bar(3, add); // 将函数名add及整数3作为参数传递给函数bar

  return 0;

}

输出:

Result is 3

Result is 5

在上面的代码中,我们定义了一个add函数,它实现了整数相加的功能。接着,我们定义了一个foo函数和一个bar函数,它们都接受函数指针作为参数。我们通过将函数名add作为参数传递给foo函数和bar函数来调用函数指针。最终,我们在main函数中调用foo函数和bar函数,并输出函数指针的结果。

总的来说,在C++中将函数作为参数传递非常方便,特别是当我们需要根据不同的情况传递不同的函数时。我们只需要定义一个函数指针类型并将函数名作为参数传递给其他函数即可实现这一需求。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复