Зачем использовать указатели базовых классов для производных классов

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?

}

Я не инженер CompSci и хотел бы знать это. Зачем использовать виртуальные функции, если мы можем избежать указателей базовых классов?

21
задан Aquarius_Girl 12 April 2017 в 06:35
поделиться