#include <iostream>

struct A
{
    void do_something() { std::cout << "A::do_something\n"; }
};

struct B : public A
{
    virtual void do_something() override { std::cout << "B::do_something\n"; }
};

int main()
{
    A a;
    B b;

    A* ptr = &a ;
    ptr->do_something();

    ptr = &b;
    ptr->do_something();
}