C++函数作为参数传递
时间: 2023-12-07 07:04:08 浏览: 30
当我们将函数作为参数传递给另一个函数时,我们可以使用函数指针或函数对象(函数器)来实现。
1. 函数指针:
使用函数指针,我们首先需要定义一个与要传递的函数具有相同签名(参数和返回值类型)的函数指针类型。然后,我们可以将函数的名称赋给指针,并将该指针作为参数传递给另一个函数。
例如,假设我们有一个函数 `void foo(int)`,我们希望将其作为参数传递给另一个函数 `void bar(void (*func)(int))`,则可以这样做:
```cpp
void foo(int x) {
// 函数体
}
void bar(void (*func)(int)) {
// 调用函数指针所指向的函数
func(42);
}
int main() {
// 将函数指针作为参数传递给另一个函数
bar(foo);
return 0;
}
```
2. 函数对象(函数器):
C++中的函数对象是可调用对象,可以像函数一样被调用。我们可以定义一个类,并在该类中实现 `operator()` 运算符重载。然后,我们可以创建该类的对象,并将该对象作为参数传递给另一个函数。
例如,假设我们有一个函数对象类 `Foo`,我们希望将其作为参数传递给另一个函数 `void bar(Foo)`,则可以这样做:
```cpp
class Foo {
public:
void operator()(int x) {
// 函数体
}
};
void bar(Foo func) {
// 调用函数对象
func(42);
}
int main() {
// 将函数对象作为参数传递给另一个函数
Foo foo;
bar(foo);
return 0;
}
```
无论是使用函数指针还是函数对象,我们都可以将函数作为参数传递给其他函数,并在接受参数的函数中调用该函数。这样可以实现更灵活的代码设计和功能扩展。