The topic is about polymorphism. it seems strange to me when the content of the vector points to the address. I didn't use it more often. This is what I understands with my limit knowledge
Vector holds elements of some type. Vector allocates memory for storing those elements. The size per element is fixed.
If you have a CollegeStudent in an element, that is what you have. You cannot assign TrojanStudennt to that space.
If you have a pointer in an element, it does not matter how big object it is pointing to. Additionally, copying pointers is much cheaper than copying complex objects.