Pouvez-vous l'emportent sur les fonctions définies dans une classe de base?

Je crois, un derived class peut override ces seules fonctions dont elle a hérité de la base class. Est ma compréhension correcte.?

Qui est le cas de la classe de base a une fonction membre public dire, func, puis la classe dérivée peut override la fonction de membre de func.

Mais si la classe de base a une fonction membre privée dire, foo, puis la classe dérivée ne peut pas annuler la fonction de membre de foo.

Suis-je droit?

Modifier

Je suis venu avec un exemple de code après avoir étudié les réponses données par les membres. Je suis en mentionnant les points que j'ai étudié en tant que commentaires dans le code. De l'espoir, je suis de droite. Grâce

/* Points to ponder:
   1. Irrespective of the access specifier, the member functions can be override in base class.
      But we cannot directly access the overriden function. It has to be invoked using a public
      member function of base class.
   2. A base class pointer holding the derived class obj's address can access only those members which
      the derived class inherited from the base class. */

#include <iostream>

using namespace std;


class base
{
   private:
      virtual void do_op()
      {
         cout << "This is do_op() in base which is pvt\n";
      }

   public:
      void op()
      {
         do_op();
      }
};

class derived: public base
{
   public:
      void do_op()
      {
         cout << "This is do_op() in derived class\n";
      }
};

int main()
{
   base *bptr;
   derived d;

   bptr = &d;
   bptr->op(); /* Invoking the overriden do_op() of derived class through the public 
               function op() of base class */ 
   //bptr->do_op(); /* Error. bptr trying to access a member function which derived class 
                    did not inherit from base class */            

   return 0;
}

OriginalL'auteur nitin_cherian | 2011-11-12