Я читал, что одним из преимуществ использования «наследования» для универсального кода является «тот факт, что тип объекта определяется во время выполнения», поскольку это обеспечивает большую гибкость.
Я не понимаю этого вопроса. Как это действительно позволяет больше гибкости?
Если, например, я получаю объект от типа, который получил Base
, то есть:
class Base{
public:
virtual void method() const { /* ... */ }
};
class D1 : public Base{
public:
void method() const override { /* ... */ }
};
class D2 : public Base{
public:
void method() const override { /* ... */ }
};
И я отправляю в функцию f
(например) следующий объект:
Base* b = new D1;
f(b);
Где гибкость (что определяется как преимущество, которое выполняется во время выполнения)?