Qu'est ce qu'un objet appelable en C++?

Je suis actuellement étudiant stimuler les threads. Et je suis tombé sur le thread de la classe a un constructeur qui accepte appelable objets. Ce sont remboursables objets?

class CallableClass
{
private:
    //Number of iterations
    int m_iterations;

public:

    //Default constructor
    CallableClass()
    {
        m_iterations=10;
    }

    //Constructor with number of iterations
    CallableClass(int iterations)
    {
        m_iterations=iterations;
    }

    //Copy constructor
    CallableClass(const CallableClass& source)
    {
        m_iterations=source.m_iterations;
    }

    //Destructor
    ~CallableClass()
    {
    }

    //Assignment operator
    CallableClass& operator = (const CallableClass& source)
    {
        m_iterations=source.m_iterations;
        return *this;
    }

    //Static function called by thread
    static void StaticFunction()
    {
        for (int i=0; i < 10; i++)  //Hard-coded upper limit
        {
            cout<<i<<"Do something in parallel (Static function)."<<endl;
            boost::this_thread::yield(); //'yield' discussed in section 18.6
        }
    }

    //Operator() called by the thread
    void operator () ()
    {
        for (int i=0; i<m_iterations; i++)
        {
            cout<<i<<" - Do something in parallel (operator() )."<<endl;
            boost::this_thread::yield(); //'yield' discussed in section 18.6
        }
    }

};

Comment est-ce devenu un objet appelable? C'est à cause de l'opérateur surchargé ou le constructeur ou autre chose?

C'est parce que operator(), oui. Voir ici. En plus de "callable objets" dans ce contexte sont aussi, les fonctions, les pointeurs de fonction et les lambda fonctions.
C'est la surcharge operator(). Il vous permet d'appeler une instance de cette classe comme une fonction. Ils sont appelés les foncteurs, la fonction des objets, appelable objets, etc.
Vous devriez tag (et le nom) de cette question avec le coup de pouce. Boost n'est pas une bibliothèque C++ standard, de sorte que la très forte poussée de la communauté pourrait être en mesure de choisir ce plus vite si vous avez balisé et l'a nommé correctement.

OriginalL'auteur Xegara | 2013-10-09

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *