概述:C++回撥函式提供了靈活的程式設計方式。基礎使用演示瞭如何定義和呼叫簡單的回撥,而高階使用則展示了返回值非 `void` 的回撥和Lambda表示式的靈活性。這種機制使程式更模組化、可維護。
在C++中,回撥函式可以用於實現基礎和高階的功能。以下是一個包含基礎和高階用法的例子,演示如何定義和使用回撥函式。
基礎使用:
#include <iostream>
#include <functional>
// 定義回撥函式型別
using BasicCallback = std::function<void(int)>;
// 基礎回撥函式
void basicCallbackFunction(int result) {
std::cout << "基礎回撥函式被呼叫,結果為: " << result << std::endl;
}
// 函式接受基礎回撥函式作為引數
void performBasicOperation(int data, BasicCallback callback) {
std::cout << "執行基礎操作,資料為: " << data << std::endl;
// 呼叫基礎回撥函式
callback(data);
}
int main() {
// 使用基礎回撥函式作為引數呼叫函式
performBasicOperation(42, basicCallbackFunction);
return 0;
}
高階使用:
#include <iostream>
#include <functional>
// 定義高階回撥函式型別
using AdvancedCallback = std::function<int(int)>;
// 高階回撥函式
int advancedCallbackFunction(int result) {
std::cout << "高階回撥函式被呼叫,結果為: " << result << std::endl;
return result * 2;
}
// 函式接受高階回撥函式作為引數
void performAdvancedOperation(int data, AdvancedCallback callback) {
std::cout << "執行高階操作,資料為: " << data << std::endl;
// 呼叫高階回撥函式並獲取結果
int result = callback(data);
std::cout << "高階操作的結果為: " << result << std::endl;
}
int main() {
// 使用高階回撥函式作為引數呼叫函式
performAdvancedOperation(42, advancedCallbackFunction);
// 使用Lambda表示式作為高階回撥函式
performAdvancedOperation(99, [](int result) {
std::cout << "Lambda高階回撥函式被呼叫,結果為: " << result << std::endl;
return result * 3;
});
return 0;
}
在這個例子中,基礎使用演示瞭如何定義和使用一個簡單的回撥函式。而高階使用展示瞭如何定義返回值非 void 的回撥函式,並且使用Lambda表示式作為一種更靈活的回撥方式。在高階例子中,回撥函式不僅被呼叫,還返回了一個結果,進一步擴充套件了回撥的靈活性。