-2
    class Add
    {
      Add(){cout<<"ctor";}
      void operator()(int a ,int b){return a+b;}

    }
    int main()
    {
      Add(3,4);
    }

Add は functor です。そして functor はコールバック メカニズムに役立ちますよね? では、ここはどこで起こっているのでしょうか??

4

1 に答える 1

2

そして、ファンクターはコールバックメカニズムに役立ちますよね?

はい。ファンクターを使用してユーザー定義の操作を実行する関数テンプレートを記述できます。例えば:

template <typename Fn>
void do_stuff(Fn f, int a, int b) {
    int c = f(a, b);
    do_something(c);
}

そして、次のように操作を挿入します。

do_stuff(Add(), 3, 4);

具体的な用途の 1 つはstd::sortアルゴリズムです。このアルゴリズムでは、ユーザーが指定したファンクターを使用して、通常の比較演算子をサポートしていない型を比較できます。

では、ここはどこで起こっているのでしょうか??

そうではありません。あなたのコードはコンパイルされません。戻り値を修正した後 ( ではない値を返すためvoid)、次の関数を作成して呼び出すことができます。

Add()(3,4);

しかし、それは特に役に立ちません。

于 2013-05-22T18:03:15.250 に答える