5

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

4

1 に答える 1

8

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

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

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

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

于 2012-12-13T05:06:33.630 に答える