Polymorphism & Pointers to arrays [duplicate]

You can’t treat arrays polymorphically, so while new B[100] creates an array of B objects and returns a pointer to the array – or equivalently the first element of the array – and while it is valid to assign this pointer to a pointer to a base class, it is not valid to treat this as a pointer into an array of A objects.

The principal reason that you can’t is that (typically) derived objects are a different size to their base classes, so attempting to access the array as an array of base class objects will not use the correct offset to get a pointer to the next base class subobject of the next member of the derived class array.

Leave a Comment