2012-12-13 5 views
5

この問題が報告された場合は申し訳ありませんが、簡単にオンラインで解決策を見つけることはできません。 operator()()をオーバーライドすると、これによってどのような動作が定義されますか?operator()()は何を定義していますか?

+4

これは関数呼び出し演算子です。これは便利かもしれません:http://stackoverflow.com/questions/4421706/operator-overloading – chris

答えて

8

operator()は、関数呼び出し演算子です。つまり、対応する型のオブジェクトを関数オブジェクトとして使用できます。 2番目の括弧のセットには、(通常通り)空の引数のリストが含まれています。例:

struct foo { 
    int operator()() { return 17; }; 
}; 

int main() { 
    foo f; 
    return f(); // use object like a function 
} 

上記の例では、演算子の宣言方法と呼び出し方法を示しています。現実的な使用はおそらくオペレータのメンバ変数にアクセスするでしょう。 Functionオブジェクトは、標準C++ライブラリの多くの場所でカスタマイズポイントとして使用されます。関数ポインタではなくオブジェクトを使用する利点は、関数オブジェクトにデータを添付できることです。

+0

あなたの例でどのように役立つかを見るのは少し難しいです。 – dreamlax

+0

@dreamlax:私は簡単な説明を追加しましたが、どの機能オブジェクトが使用されているのかについては、既存の回答を探してください。 –

+0

+1:Nice infoを追加しました。 – dreamlax

関連する問題