Méthodes standard (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Méthodes virtuelles


Les méthodes d'une classe sont considérées comme standard (non virtuelles), sauf si vous les déclarez virtual, ou si elles redéfinissent une méthode virtual d'une classe de base. Le compilateur peut déterminer l'adresse exacte d'un membre de classe standard au moment de la compilation. Il s'agit de la liaison au moment de la compilation.

Une méthode standard de classe de base est héritée par des classes dérivées. Dans l'exemple ci-dessous, un objet de typeDerived peut appeler la méthode Regular() comme si c'était sa propre méthode. Déclarer dans une classe dérivée une méthode ayant le même nom et les mêmes paramètres qu'une méthode standard de l'ancêtre de la classe remplace la méthode de l'ancêtre. Dans notre exemple, lorsque d->AnotherRegular() est appelée, c'est la méthode qui remplace AnotherRegular() dans la classe Derived qui est appelée.

class Base
{
public:
    void Regular();
    void AnotherRegular();
    virtual void Virtual();
};
class Derived : public Base
{
public:
    void AnotherRegular();          // replaces Base::AnotherRegular()
    void Virtual();                 // overrides Base::Virtual()
};
void FunctionOne()
{
  Derived *d;
  d = new Derived;
  d->Regular();                   // Calling Regular() as it were a member of Derived
                                  // The same as calling d->Base::Regular()
  d->AnotherRegular();            // Calling the redefined AnotherRegular(), ...
                                  // ... the replacement for Base::AnotherRegular()
  delete d;
}
void FunctionTwo(Base *b)
{
  b->Virtual();
  b->AnotherRegular();
}