Partage
  • Partager sur Facebook
  • Partager sur Twitter

Heritage privé

    7 février 2019 à 22:11:06

    Bonjour,

    As t'on besoin de definir les destructeur comme virtuel avec l'heritage privé ?

    Ou laquelle de ces écritures a la plus juste:

    class foo
    {
    public:
        ~foo();
    };
    
    class bar: private foo
    {
    public:
        ~bar();
    };
    
    class foo
    {
    public:
        virtual ~foo();
    };
    
    class bar: private foo
    {
    public:
        virtual ~bar();
    };



    • Partager sur Facebook
    • Partager sur Twitter
      7 février 2019 à 22:24:10

      Non, puisque tu ne pourras pas appeler le destructeur de "foo" a partir d'un objet de type "bar". (Via une variable de type "foo&" ou directement avec "foo::~foo()")

      Et si tu n'utilises pas "bar" dans un héritage public ensuite. (Ajoutes "final" pour éviter cela ?) 

      • Partager sur Facebook
      • Partager sur Twitter
        7 février 2019 à 23:32:21

        (final bloque tous les héritages, public comme privé. On ne peut pas s'en servir pour protéger proprement des valeurs tout en se donnant la possibilité d'importer du code par héritage plutôt que par composition)
        • Partager sur Facebook
        • Partager sur Twitter
        C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

        Heritage privé

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown