Jetons un foncteur simple,Terminologie entourant foncteurs
class LessThan {
public:
explicit LessThan (int in) : val(in) {}
bool operator() (int param) const {
return param < val;
}
private:
int val;
};
que je peux utiliser comme ceci par exemple -
vector<int> myVector = factory();
size_t count = count_if(begin(myVector), end(myVector), LessThan(10));
Ma compréhension de la terminologie entourant foncteurs est que la classe LessThan
est un foncteur. c'est-à-dire que c'est un type, pas un objet. c'est-à-dire abstrait, pas concret. Alors, comment appelons-nous LessThan(10)
? Ici, nous créons un objet en instanciant le type de foncteur LessThan
. Alors, l'appelons-nous un objet foncteur? Mais, les foncteurs sont des objets de fonction. Donc, LessThan(10)
est un objet objet fonction?
N'est-ce pas absurde?
objets * sont types *. Ou plutôt, ce sont des * instances * de types. Les classes définies par l'utilisateur sont des types et lorsque vous les instanciez, vous obtenez des objets de ce type. –
@JesperJuhl Pour 'int a', ...' int' est un type et 'a' est un objet. Et les deux sont donc différents. –
Si cela vous aide, pensez-y de la façon suivante: 'LessThan' est un type d'objet _function. 'LessThan (10)' est un objet _function. –