Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan fungsi panggil balik dalam C++?

Bagaimana untuk menggunakan fungsi panggil balik dalam C++?

PHPz
PHPzasal
2024-04-13 09:24:01749semak imbas

Fungsi panggil balik dalam C++ dilaksanakan melalui penuding fungsi atau ungkapan lambda: Penunjuk fungsi: tentukan jenis void(*Fungsi Panggilan Balik)(int); Kelas mendaftarkan fungsi panggil balik dan mencetuskan peristiwa. Ungkapan Lambda: Daftar fungsi panggil balik: RegisterCallback(std::function823779cb011116433bf22081bdae9ba2 callback function: CallCallbacks(value);

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

Penggunaan fungsi panggil balik dalam C++

Fungsi panggil balik ialah fungsi yang membenarkan fungsi mengembalikan kawalan kepada pemanggil dan kemudian laksana semula apabila syarat tertentu dipenuhi. Ini berguna dalam pengaturcaraan dipacu peristiwa, di mana satu peristiwa boleh mencetuskan berbilang tindakan.

Dalam C++, fungsi panggil balik boleh dilaksanakan melalui penunjuk fungsi atau ungkapan lambda.

Gunakan penunjuk fungsi

// 定义一个函数指针类型
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();

Gunakan ungkapan lambda

Diperkenalkan dalam C++11, ungkapan lambda menyediakan cara ringkas untuk mentakrifkan fungsi tanpa nama.

rreeee

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi panggil balik dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn