• [^] # Re: Ne te prends plus la tête

    Posté par (site web personnel) . En réponse au journal C(++) ?. Évalué à 9.

    Faux!
    Tu contrôles bien plus le design de ton object en C++ car tout est possible. Tu as le choix entre plein de méthode

    struct MyClass {
     // le plus classique, une fonction virtuelle
     virtual int myVirtualFunction(double);
     // un pointeur de fonction comme en C
     int (*myPointer)(double);
     // une table virtuel manuelle
     struct VTable {
     int (*firstFunction)(double)
     };
     VTable *vtable;
     // boost::signals
     signals<int(double)> mySignal;
     // Qt signals (c'est tricher?)
     signals: int myQtSignal(double);
    };
    /* et enfin, le static polymorphise via le Curiously recurring template pattern qui a l'avantage d'être plus performent car il peux inliner les appels. Vas-y pour faire ça en C */
    template<class Derived> struct Base {
     int myFunction(double a) 
     { return static_cast<Derived*>(this)->myFunction(a); }
    };

    Bref, plein de possibilité offerte en C++, chacune adaptée à son usage. Mais dans tout les cas, la manière de faire en C++ est moins fastidieuse, plus facile à écrire et relire, et moins prône à l'erreur.

    Bref, le C est un mauvais choix.