在C++中,函數對象(也稱為仿函數或functor)是一個類或結構體,它重載了operator()
運算符,從而使其對象可以像函數一樣被調用。函數對象通常用于STL(Standard Template Library)算法中,作為傳遞的可調用實體。
以下是定義一個簡單的C++函數對象的基本步驟:
operator()
運算符。下面是一個簡單的C++函數對象示例,該對象用于計算兩個整數的和:
#include <iostream>
// 定義一個函數對象
struct Sum {
int operator()(int a, int b) const {
return a + b;
}
};
int main() {
Sum sumObj;
int result = sumObj(3, 4); // 調用函數對象,相當于調用sumObj(3, 4)
std::cout << "The sum is: " << result << std::endl;
return 0;
}
在這個例子中,我們定義了一個名為Sum
的結構體,并重載了operator()
運算符,使其接受兩個整數參數并返回它們的和。然后,在main
函數中,我們創建了一個Sum
對象sumObj
,并通過調用該對象來計算兩個整數的和。
函數對象通常比普通函數更靈活,因為它們可以擁有狀態(通過成員變量)并且可以被定制(通過重載其他成員函數)。此外,由于函數對象是類或結構體,因此它們可以使用繼承和多態性。