Dynamic memory allocation isn't specifically required to achieve polymorphic behaviour, but the alternatives if you want to store pointers in a container are significantly more complicated (i.e. need...