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