Fonction C++ primordial

J'ai trois différentes classes de base:

class BaseA
{
public:
    virtual int foo() = 0;
};

class BaseB
{
public:
    virtual int foo() { return 42; }
};

class BaseC
{
public:
    int foo() { return 42; }
};

Je puis tirer à partir de la base comme ceci (remplacer X par A, B ou C):

class Child : public BaseX
{
public:
    int foo() { return 42; }
};

Quelle est la fonction remplacé dans les trois différentes classes de base? Mes trois hypothèses suivantes est correcte? Existe-il d'autres mises en garde?

  • Avec BaseA, l'enfant de la classe ne compile pas, la fonction virtuelle pure n'est pas défini.
  • Avec BaseB, la fonction de l'enfant est appelé lors de l'appel de foo sur un BaseB* ou de l'Enfant*.
  • Avec BaseC, la fonction de l'enfant est appelé lors de l'appel de foo sur l'Enfant* mais pas sur BaseB* (la fonction dans la classe parent est appelé).

OriginalL'auteur Mizipzor | 2009-06-22

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *