在 C 中,透過 std::function 範本可將函式指標轉換為函式物件:使用 std::function 將函式指標包裝成函式物件。使用 std::function::target 成員函數將函數物件轉換為函數指標。此轉換在事件處理、函數回調和泛型演算法等場景中很有用,提供了更大的靈活性和程式碼重用性。
在C 中,函數指標和函數物件是兩個密切相關的概念,允許我們以更靈活的方式工作與函數。在某些情況下,您可能希望將函數指針轉換為函數對象,或者反之亦然。
可以透過使用 std::function
範本來將函數指標轉換為函數物件。 std::function
接受任何可呼叫的實體(包括函數指標)並將其包裝在一個可以呼叫的物件中。
// 函数指针 int add(int a, int b) { return a + b; } // 转换为函数对象 std::function<int(int, int)> add_fn = add; // 调用函数对象 int result = add_fn(10, 20); // 结果为 30
要將函數物件轉換為函數指針,可以使用 std::function::target
成員函數。此函數傳回一個指向函數物件底層函數的函數指標。
std::function<int(int, int)> add_fn = [](int a, int b) { return a + b; }; // 转换为函数指针 int (*add_ptr)(int, int) = add_fn.target<int (*)(int, int)>(); // 调用函数指针 int result = add_ptr(10, 20); // 结果为 30
在以下場景中,您可能會發現將函數指標轉換為函數物件或vice versa 很有用:
std::function
可用於將任何可呼叫的實體傳遞給泛型演算法,提供彈性。 透過瞭解函數指標和函數物件之間的轉換,您可以編寫更靈活且可重複使用的程式碼。
以上是如何將函數指標轉換為函數物件並反之?的詳細內容。更多資訊請關注PHP中文網其他相關文章!