函數指標和回呼函數都是實現回呼機制的工具。函數指標在編譯時創建,不可修改,需要明確呼叫;而回呼函數在運行時創建,可動態綁定到不同函數,由回調函數自動呼叫。因此,函數指標適合靜態回調,而回呼函數適合動態回呼。
函數指標和回呼函數都是 C 中用來實現回呼機制的強大工具。
函數指標
回呼函數
考慮一個需要在不同時間執行不同任務的應用程式。我們可以使用以下程式碼實作此功能:
#include <iostream> // 定义一个打印消息的函数 void print_message(const char* message) { std::cout << message << std::endl; } // 定义一个接受函数指针参数的回调函数 void execute_callback(void (*callback)(const char*)) { callback("Hello world!"); } int main() { // 使用函数指针调用回调函数 execute_callback(print_message); // 动态创建并调用回调函数 auto lambda = [](const char* message) { std::cout << "[Lambda] " << message << std::endl; }; execute_callback(lambda); return 0; }
在這個範例中,print_message
是一個函數指針,用於靜態回調。 lambda 表達式 lambda
是一個動態回調,它在運行時會建立並綁定到 execute_callback
。
特性 | 函數指標 | 回呼函數 |
---|---|---|
建立時機 | 編譯時 | |
#可修改性 | 不可修改 | 可修改 |
呼叫方式 | 明確 | #自動 |
綁定 | 靜態 | 動態 |
以上是C++ 函數指標與回呼函數的對比的詳細內容。更多資訊請關注PHP中文網其他相關文章!