Les fonctions de rappel en C++ sont implémentées via des pointeurs de fonction ou des expressions lambda : Pointeur de fonction : définir le type void(*CallbackFunction)(int); enregistrer la fonction de rappel : RegisterCallback(callback); Les classes enregistrent des fonctions de rappel et déclenchent des événements. Expression Lambda : fonction de rappel d'enregistrement : RegisterCallback(std::function
Utilisation de la fonction de rappel en C++
Une fonction de rappel est une fonction qui permet à une fonction de rendre le contrôle à l'appelant puis de s'exécuter à nouveau lorsque certaines conditions sont remplies. Ceci est utile dans la programmation événementielle, où un événement peut déclencher plusieurs actions.
En C++, les fonctions de rappel peuvent être implémentées via des pointeurs de fonction ou des expressions lambda.
Utilisez des pointeurs de fonction
// 定义一个函数指针类型 typedef void(*CallbackFunction)(int); // 注册回调函数 void RegisterCallback(CallbackFunction callback) { // 将回调函数存储在列表中 callbackList.push_back(callback); } // 调用回调函数 void CallCallbacks(int value) { for (auto callback : callbackList) { callback(value); } } // 实战案例:事件处理 // 定义一个事件处理类 class EventHandler { public: void OnEvent() { // 调用注册的回调函数 CallCallbacks(42); } }; // 创建事件处理类实例 EventHandler eventHandler; // 订阅事件的回调函数 RegisterCallback([](int value) { std::cout << "事件处理程序: " << value << std::endl; }); // 触发事件 eventHandler.OnEvent();
Utilisez des expressions lambda
Introduites en C++11, les expressions lambda fournissent un moyen concis de définir des fonctions anonymes.
// 注册回调函数 void RegisterCallback(std::function<void(int)> callback) { // 将回调函数存储在列表中 callbackList.push_back(callback); } // 调用回调函数 void CallCallbacks(int value) { for (auto callback : callbackList) { callback(value); } } // 实战案例:用户输入 // 创建一个获取用户输入的函数 std::string GetUserInput() { std::string input; std::cout << "输入一些文本:" << std::flush; std::cin >> input; return input; } // 订阅获取用户输入后的回调函数 RegisterCallback([](int value) { std::cout << "用户输入了:" << GetUserInput() << std::endl; }); // 获取用户输入 GetUserInput();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!