Maison  >  Article  >  développement back-end  >  Comment utiliser les fonctions de rappel en C++ ?

Comment utiliser les fonctions de rappel en C++ ?

PHPz
PHPzoriginal
2024-04-13 09:24:01748parcourir

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::function823779cb011116433bf22081bdae9ba2 callback); Fonction de rappel d'appel : CallCallbacks(value); Exemple : obtenir l'entrée de l'utilisateur et enregistrer la fonction de rappel.

C++ 中如何使用回调函数?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn