使用C ++関数オブジェクト

Functionオブジェクトは、該当同じ機能を使用してのようなものです。

たとえば、次のようにクラスの比較

#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;
}
公開された112元の記事 ウォン称賛34 ビュー40000 +

おすすめ

転載: blog.csdn.net/qq_41681241/article/details/104111602