回调函数是一种在某个特定事件发生时由另一个函数(通常是库或系统函数)调用的函数。你可以把它想象成一种“电话号码”:你给某个服务(例如,一个库或系统函数)你的电话号码(回调函数),然后当服务完成某项任务(例如,数据加载完成)时,它就会打电话给你(调用你的回调函数)。
在蜘蛛侠的背景下,我们可以想象蜘蛛侠设置了一个警报系统(回调函数),当城市中发生犯罪(特定事件)时,警报系统就会通知蜘蛛侠。
以下是一个使用 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 函数中,我们设置了当犯罪发生时,蜘蛛侠应该响应犯罪。