Por qué usar punteros de clase base para clases derivadas

class base{
    .....
    virtual void function1();
    virtual void function2();
};

class derived::public base{
    int function1();
    int function2();
};

int main()
{
    derived d;
    base *b = &d;
    int k = b->function1() // Why use this instead of the following line?
    int k = d.function1(); // With this, the need for virtual functions is gone, right?

}

No soy un ingeniero de CompSci y me gustaría saber esto. ¿Por qué usar funciones virtuales si podemos evitar punteros de clase base?

Respuestas a la pregunta(8)

Su respuesta a la pregunta