在 C++ 中,std::function 是一個通用的函數包裝器,可以用來封裝函數、函數指針、成員函數和 lambda 表達式等。它提供了一種機制,使得可以將函數視為對象來傳遞、保存和調用。
使用 std::function 時,首先需要指定函數的簽名,即函數的參數類型和返回類型。然后可以通過以下方式進行使用:
定義 std::function 對象:使用函數簽名作為模板參數來定義 std::function 對象。 例如:std::function<int(int)> func; 這表示 func 是一個接受 int 類型參數并返回 int 類型結果的函數對象。
將函數賦值給 std::function 對象:可以將一個函數、函數指針、成員函數或 lambda 表達式賦值給 std::function 對象。 例如:func = some_function; 這將將函數 some_function 賦值給 func。
調用 std::function 對象:可以直接像調用函數一樣調用 std::function 對象。 例如:int result = func(5); 這將調用 func,并將參數 5 傳遞給它,然后返回結果。
std::function 還支持一些其他的操作,如比較、清空等。通過使用 std::function,可以更靈活地處理函數對象,在需要傳遞和保存函數時提供了一種方便的方式。