溫馨提示×

C++函數對象如何實現回調

c++
小樊
122
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女