は、簡単なファンクタ私は、たとえば次のように使用することができます用語周囲のファンクタ
class LessThan {
public:
explicit LessThan (int in) : val(in) {}
bool operator() (int param) const {
return param < val;
}
private:
int val;
};
を見てみましょう -
vector<int> myVector = factory();
size_t count = count_if(begin(myVector), end(myVector), LessThan(10));
ファンクタを取り巻く用語の私の理解では、クラスLessThan
がファンクタであるということです。すなわちそれはオブジェクトではなくタイプである。すなわち抽象的であり、具体的ではない。
だから、LessThan(10)
とは何ですか?ここでは、LessThan
ファンクタ型をインスタンス化してオブジェクトを作成しています。だから、それをファンクタオブジェクトと呼んでいますか?しかし、ファンクタは関数オブジェクトです。したがって、LessThan(10)
は関数オブジェクトオブジェクトですか?
それは不合理ではありませんか?
オブジェクトは、* *タイプです。あるいは、むしろ、それらは型の*インスタンス*です。ユーザー定義のクラスは型であり、インスタンス化するとその型のオブジェクトが取得されます。 –
@JesperJuhl 'int a'の場合、... intは型で、' a'はオブジェクトです。したがって、2つは異なる。 –
助けがあれば、このように考えてください: 'LessThan'は_functionオブジェクトの型です。 'LessThan(10)'は_関数オブジェクトです。 –