Вызов метода класса через указатель на объект

class Base
{
    public:
    void method(){}
};

class Child : public Base
{
    public:
    void method()
    {
        std::cout << "child" << std::endl;
    }
};
int main()
{
   Base *base = new Child();
   
   base->method();
   return 0;
}

base->method() в данном случае ничего не выводит. Можете объяснить почему?


Ответы (1 шт):

Автор решения: Harry
class Base
{
    public:
    virtual void method(){}
};

Обратите внимание на ключевое слово virtual. Только виртуальные функции вызываются с использованием механизма динамического полиморфизма.

Не виртуальные функции-члены связываются во время компиляции статически, на основании указанного типа.

→ Ссылка