Рассмотрим следующий простой полиморфизм ...
class Parent {
public:
someFunc() { /* implementation A */ };
};
class Child : public Parent {
public:
someFunc() { /* implementation B */ };
};
int main ()
{
Parent* ptr;
ptr = new Parent();
ptr->someFunc();
delete ptr;
ptr = new Child();
ptr->someFunc();
delete ptr;
return 0;
}
Насколько я могу судить, в обоих случаях будет вызываться реализация A.
Как я могу вызвать«самая производная» реализация someFunc, в зависимости от динамического типа ptr?
В моем реальном коде есть много дочерних типов, поэтому было бы непрактично использовать dynamic_cast для проверки каждого дочернего класса.