面试题答案
一键面试-
事件注册:
- 定义一个函数指针类型,用于表示事件处理函数。
- 创建一个容器(例如
std::vector
)来存储注册的事件处理函数指针。 - 提供一个注册函数,将事件处理函数指针添加到容器中。
-
事件触发:
- 当事件发生(如按钮点击)时,遍历存储事件处理函数指针的容器。
- 依次调用每个事件处理函数。
-
处理逻辑:
- 每个事件处理函数根据自身的逻辑进行处理,比如打印日志、更新界面等。
关键代码片段如下:
#include <iostream>
#include <vector>
// 定义事件处理函数类型
using ButtonClickHandler = void(*)();
// 存储事件处理函数的容器
std::vector<ButtonClickHandler> clickHandlers;
// 事件注册函数
void registerButtonClickHandler(ButtonClickHandler handler) {
clickHandlers.push_back(handler);
}
// 事件触发函数
void triggerButtonClick() {
for (const auto& handler : clickHandlers) {
if (handler) {
handler();
}
}
}
// 示例事件处理函数1
void handleButtonClick1() {
std::cout << "Button Clicked. Handler 1 executed." << std::endl;
}
// 示例事件处理函数2
void handleButtonClick2() {
std::cout << "Button Clicked. Handler 2 executed." << std::endl;
}
你可以这样使用上述代码:
int main() {
// 注册事件处理函数
registerButtonClickHandler(handleButtonClick1);
registerButtonClickHandler(handleButtonClick2);
// 模拟按钮点击事件触发
triggerButtonClick();
return 0;
}