首頁  >  文章  >  後端開發  >  C++ 中如何使用回呼函數?

C++ 中如何使用回呼函數?

PHPz
PHPz原創
2024-04-13 09:24:01749瀏覽

C 中回呼函數透過函數指標或lambda 表達式實作:函數指標:定義型別void(*CallbackFunction)(int);註冊回呼函數:RegisterCallback(callback);呼叫回呼函數:CallCallbacks(value);實例:事件處理類別註冊回調函數並觸發事件。 lambda 表達式:註冊回呼函數:RegisterCallback(std::function823779cb011116433bf22081bdae9ba2 callback);呼叫回調函數:CallCallbacks(value);實例:取得使用者輸入並註冊回呼函數。

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

C 中回呼函數的用法

#回呼函數是允許函數將控制權傳回給呼叫者,然後在某些條件滿足時再次執行的函數。這在事件驅動的程式設計中非常有用,其中一個事件可能觸發多個動作。

在 C 中,回呼函數可以透過函數指標或 lambda 表達式實現。

使用函數指標

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

使用lambda 表達式

C 11 中引入lambda 表達式,它提供了一種簡潔的方式定義匿名函數。

// 注册回调函数
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();

以上是C++ 中如何使用回呼函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn