c++ compréhension de la création d'un objet
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

c++ compréhension de la création d'un objet



  1. #1
    docEmmettBrown

    c++ compréhension de la création d'un objet


    ------

    Bonjour à tous,

    J'étais en train de faire du C++ lorsque je suis tombé sur la création d'une instance de classe que je ne comprend pas.
    Je vous montre 2 codes différents qui ont le meme résultat final, mais je ne comprend pas le 2ème cas.

    1er cas:
    Code:
    cv::Point p(10,10);
    cv::circle(originalImg, p, ...);
    Dans ce cas la il n' y a pas de soucis de compréhension, la fonction circle demande plusieurs parametres :
    void circle(Mat& image, Point center, ...); donc je donne en second parametre un objet de la classe Point et tout va bien il est content.

    Mais dans le second cas :
    Code:
    cv::circle(originalImg, cv::Point(10,10), ...)
    J'ai donc crée un objet directement : cv::Point(10,10) et je ne comprend pas du tout comme c'est possible, peut on directement appeler un constructeur en statique ???

    pouvez vous m'aider à comprendre

    Merci d'avance pour votre aide

    PS : voici la datasheet de la class Point si vous en avez besoin : http://docs.opencv.org/trunk/db/d4e/...bcfaf23d7e6105

    -----

  2. #2
    pm42

    Re : c++ compréhension de la création d'un objet

    Les 2 codes sont équivalents. Dans le 1er, tu crées ton point et tu le mets dans une variable temporaire p. Puis tu le passes au constructeur de circle.
    Dans le 2nd, tu as simplement viré la variable temporaire.

    C'est un peu comme si en maths tu disais :

    y = y^2
    z = cos(y)

    Ben tu peux aussi dire z = cos(y^2)

    En C++, tu peux passer en argument une valeur mais aussi le résultat d'une expression. Et cette expression peut être l'appel d'une fonction, la construction d'un objet, etc.

  3. #3
    docEmmettBrown

    Re : c++ compréhension de la création d'un objet

    effectivement ca marche, je l'ai vérifié avec ce bout de code :
    Code:
    class A{
        public :
            A(int _x, int _y) : x(_x), y(_y)
            {}
            
            int x;
            int y;
    };
    
    void f(A a)
    {
        std::cout << a.x << std::endl;
        std::cout << a.y << std::endl;
    }
    
    int main(int argc, char const *argv[])
    {
        f(A(5, 8));
    }
    ce qui me posais probleme et le passage par copie dans la fonction qui fait A a = A(5, 8) alors que je fais toujours A a(5, 8), autant pour moi.

    Merci en tout cas de ta réponse

Discussions similaires

  1. [Autre] Création d'un objet hardware
    Par invite1e08060c dans le forum Électronique
    Réponses: 8
    Dernier message: 26/03/2016, 07h28
  2. Problème de création d'objet [PROCESSING]
    Par croco01 dans le forum Programmation et langages, Algorithmique
    Réponses: 14
    Dernier message: 10/08/2013, 13h29
  3. création d'un objet insolite
    Par invite439c177e dans le forum Électronique
    Réponses: 1
    Dernier message: 11/10/2011, 23h22
  4. Création d'un objet qui réagit au son
    Par invite6ac65431 dans le forum Électronique
    Réponses: 7
    Dernier message: 27/04/2007, 09h55