函数对象就是像使用函数一样适用对象。
比如:一个比较大小的类
#include <iostream>
using namespace std ;
class A{
public :
int operator() (int a, int b){
return a-b ;
}
} ;
int main()
{
int a=1, b= 2 ;
A a1 ;
int ret = a1(a, b) ;
cout << ret << endl ;
return 0;
}
结合模板使用,使用户能定义一个模板类的比较大小的函数:
#include <iostream>
using namespace std ;
class A{
public :
int operator() (int a, int b){
return a-b ;
}
} ;
template<class T, class T2>
class Test {
private :
T2 comp ;
T data ;
public :
int operator==(Test t) {
bool ret = comp(t.data, data) ;
if(ret >= 0) {
return 1 ;
}
return 0 ;
}
void setData(T t) {
data = t ;
}
int getData() {
return data ;
}
} ;
int main()
{
Test<int, A>tt ;
Test<int, A>tt1 ;
tt.setData(10) ;
tt1.setData(199) ;
if(tt == tt1) {
cout << "大于相等" << endl ;
}
else{
cout << "小于"<< endl ;
}
return 0;
}