Но как я вообще могу видеть эту замену, если мы не будем касаться полиморфного поведения?
Я это понимаю, но просто суть в том, что с virtual, что без -- одно и то же.
Мы так же можем достучаться до оригинального метода,
по памяти -- то же самое (за исполючением того, что при virtual создается еще и vtable).
следовательно, лучшей практикой посчитаем всегда объявлять методы класса виртуальным