c++ 函数对象的使用

函数对象就是像使用函数一样适用对象。

比如:一个比较大小的类

#include 
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 
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;
}

你可能感兴趣的:(c++学习)