0

私は C++ での演算子のオーバーロードを理解しようとしていますが、+ や [] などの演算子を注意深く使用すると、その有用性がわかります。() のオーバーロードに興味があります。Boostは統計クラスでそれを使用しているようで、私はそれらを使用できますが、私が何をしているのか本当に理解していません.

() 演算子をオーバーロードすると便利な場合の簡単な例を誰かが提供できますか? みんなありがとうピート

4

2 に答える 2

1

operator()のオーバーロードの一般的な使用法は、関数オブジェクトまたはfunctorsです。以下の例に示すように、operator()を定義するクラスのオブジェクトを使用して、関数であるかのように使用できます。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class multiply
{
private:
    int x;
public:
    multiply(int value):x(value) { }
    int operator()(int y) { return x * y; }
    int getValue() { return x; }
};

int main()
{
    multiply m(10); //create an object
    cout << "old value is " << m.getValue() << endl;
    int newValue = m(2); //this will call the overloaded () 
    cout << "new value is " << newValue << endl;
}
于 2012-06-09T06:32:20.007 に答える
0

概要: C++ クラスで () 演算子をオーバーロードすると、さまざまな型と数のパラメーターを使用してクラス メソッドを実装し、それぞれに異なる機能を提供できます。() をオーバーロードするときは注意が必要です。これを使用しても、何が行われているかの手がかりが得られないからです。用途は限られていますが、行列操作などに効果的です。

From: () 演算子のオーバーロード (learncpp.com)

于 2012-06-09T05:53:59.903 に答える