2016-09-09 2 views
-6

Un objet de la fonction:Un objet de la fonction:

  1. est une instance d'une classe pour laquelle l'opérateur() est une fonction de membre.
  2. est une instance d'une classe pour laquelle l'opérateur -> est une fonction de membre.
  3. est un pointeur vers une fonction
  4. est une fonction membre d'une classe

Ma tentative:

Un objet de fonction, ou Functor (les deux termes sont synonymes) est tout simplement tout objet pouvant être appelé comme s'il s'agissait d'une fonction. Une fonction ordinaire est un objet fonction, tout comme un pointeur de fonction; plus généralement, il en est de même d'un objet qui définit operator().

Foncteurs (Fonction Objets ou Fonctionnels) sont simplement mis objet +().

Il me semble que l'option (3) est vrai, mais je suis confondu avec l'option (1), est-il vrai?

Pouvez-vous l'expliquer, s'il vous plaît?

Répondre

0

Un objet de fonction est une instance d'une classe qui définit l'opérateur parenthèse comme une fonction membre. Lorsqu'un objet fonction est utilisé en tant que fonction, l'opérateur parenthèse est appelé chaque fois que la fonction est appelée. Considérez la définition de classe suivante:

class biggerThanThree 
{ 
    public: 
    bool operator() (int val) 
    { return val > 3; } 
}; 

Si nous créons une instance de la classe biggerThanThree, chaque fois que nous faisons référence à cet objet en utilisant la syntaxe d'appel de fonction, l'opérateur parenthèses fonction membre est invoquée.


Référence:

  1. http://www.cplusplus.com/reference/functional/binary_function/
  2. https://msdn.microsoft.com/en-in/library/aa985932.aspx