c++

C++函数对象如何实现回调

小樊
83
2024-10-30 16:13:24
栏目: 编程语言

在C++中,可以使用函数对象(也称为仿函数或functor)来实现回调。函数对象是一个类或结构体,它重载了()运算符,使其可以像函数一样被调用。这样,你可以将函数对象作为参数传递给其他函数,实现回调功能。

以下是一个简单的示例,展示了如何使用函数对象实现回调:

#include <iostream>
#include <functional>

// 定义一个函数对象,用于计算两个数的和
struct Sum {
    int operator()(int a, int b) const {
        return a + b;
    }
};

// 定义一个接受回调函数作为参数的函数
template <typename Callback>
int applyCallback(int a, int b, Callback callback) {
    return callback(a, b);
}

int main() {
    Sum sum;
    int result = applyCallback(3, 4, sum); // 使用函数对象sum作为回调函数
    std::cout << "The sum is: " << result << std::endl; // 输出 "The sum is: 7"

    // 使用lambda表达式作为回调函数
    auto lambdaSum = [](int a, int b) { return a + b; };
    result = applyCallback(3, 4, lambdaSum); // 使用lambda表达式作为回调函数
    std::cout << "The sum is: " << result << std::endl; // 输出 "The sum is: 7"

    return 0;
}

在这个示例中,我们定义了一个名为Sum的函数对象,它重载了()运算符以计算两个数的和。我们还定义了一个名为applyCallback的模板函数,它接受一个回调函数作为参数。在main函数中,我们使用Sum对象和lambda表达式作为回调函数调用applyCallback函数。

0
看了该问题的人还看了