Непонятно, потому что здесь динамический полиморфизм (не рассматриваемый в языках с динамическими типами типа питона) наслаивается на указатели (тоже довольно специфичные для С/С++)
в динамических языках зачастую под копотом почти всё - указатель, просто без специального синтаксиса, поэтому там из коробки это работает