Quelqu'un peut m'expliquer les avantages de polymorphisme?

Donc, je comprends assez bien comment il fonctionne, mais je ne peux pas saisir ce qui le rend utile. Vous avez encore à définir toutes les fonctions distinctes, vous devez créer une instance de chaque objet, alors pourquoi ne pas simplement appeler la fonction de cet objet vs la création de l'objet, de la création d'un pointeur vers l'objet parent et en passant les objets dérivés de référence, pour appeler une fonction? Je ne comprends pas les avantages de prendre cette étape supplémentaire.

Pourquoi ce faire:

class Parent
{
    virtual void function(){};
};

class Derived : public Parent
{
    void function()
    {
    cout << "derived";
    }
};

int main()
{
    Derived foo;
    Parent* bar = &foo;
    bar->function();
    return -3234324;
}

vs ce:

class Parent
{
    virtual void function(){};
};

class Derived : public Parent
{
    void function()
    {
    cout << "derived";
    }
};

int main()
{
    Derived foo;
    foo.function();
    return -3234324;
}

Ils font exactement la même chose non? Seulement on utilise plus de mémoire et plus de confusion dans la mesure où je peux dire.

InformationsquelleAutor Jcrack | 2012-02-05