C++回调函数的实现

84 阅读1分钟

回调函数是一种在某个特定事件发生时由另一个函数(通常是库或系统函数)调用的函数。你可以把它想象成一种“电话号码”:你给某个服务(例如,一个库或系统函数)你的电话号码(回调函数),然后当服务完成某项任务(例如,数据加载完成)时,它就会打电话给你(调用你的回调函数)。

在蜘蛛侠的背景下,我们可以想象蜘蛛侠设置了一个警报系统(回调函数),当城市中发生犯罪(特定事件)时,警报系统就会通知蜘蛛侠。

以下是一个使用 C++ 的例子:

#include <iostream>
#include <functional>

class City {
public:
    void setCrimeHappenedCallback(const std::function<void()>& callback) {
        crimeHappenedCallback = callback;
    }

    void crimeHappens() {
        if (crimeHappenedCallback) {
            crimeHappenedCallback();
        }
    }

private:
    std::function<void()> crimeHappenedCallback;
};

class SpiderMan {
public:
    void respondToCrime() {
        std::cout << "Spider-Man is responding to a crime!\n";
    }
};

int main() {
    City newYork;
    SpiderMan peterParker;

    newYork.setCrimeHappenedCallback([&]() { peterParker.respondToCrime(); });

    newYork.crimeHappens();  // Outputs: "Spider-Man is responding to a crime!"

    return 0;
}

在这个例子中,City 类有一个 setCrimeHappenedCallback 方法,用于设置当犯罪发生时应该调用的回调函数。SpiderMan 类有一个 respondToCrime 方法,当犯罪发生时,这个方法会被调用。在 main 函数中,我们设置了当犯罪发生时,蜘蛛侠应该响应犯罪。