在C++中,函數對象(也稱為仿函數或functor)是一種可以像函數一樣被調用的對象。它們可以通過定義一個函數調用操作符operator()
來實現。要實現一個函數對象,你需要遵循以下步驟:
operator()
,該操作符接受與所需函數簽名相匹配的參數列表,并返回一個值。operator()
時執行更多操作。下面是一個簡單的函數對象示例,用于計算兩個整數的和:
#include <iostream>
// 定義一個函數對象類
struct Sum {
// 函數調用操作符,接受兩個整數參數并返回它們的和
int operator()(int a, int b) const {
return a + b;
}
};
int main() {
// 創建一個Sum對象
Sum sum;
// 使用函數對象計算兩個整數的和
int result = sum(3, 4);
// 輸出結果
std::cout << "The sum is: " << result << std::endl;
return 0;
}
這個示例中,我們定義了一個名為Sum
的結構體,其中包含一個函數調用操作符operator()
。當我們創建一個Sum
對象并調用它時,它會計算兩個整數的和。
你還可以使用C++11引入的lambda表達式來創建簡單的匿名函數對象。例如:
#include <iostream>
int main() {
// 使用lambda表達式創建一個匿名函數對象
auto sum = [](int a, int b) { return a + b; };
// 使用函數對象計算兩個整數的和
int result = sum(3, 4);
// 輸出結果
std::cout << "The sum is: " << result << std::endl;
return 0;
}
這個示例中,我們使用了一個lambda表達式來創建一個匿名函數對象,它的功能與之前的Sum
結構體相同。