What is the reason why the base class array in C++ cannot use polymorphism?
What is the reason why the base class array in C++ can not use polymorphism? for this problem, this article introduces the corresponding analysis and solution in detail, hoping to help more partners who want to solve this problem to find a more simple and feasible method.
Reason:
The array is allocated in the way of first address + offset, and the offset is fixed, for example: Node arry [10]
Address of arry [I]: & arry [0] + i*sizeof (Node)
When Node is a base class with virtual functions, all the elements of the base class Node are saved in arry [], because the value of the array is fixed offset. Once the inherited class is stored in the array, the value of the array will lead to an invisible error. (note: this element is usually considered to be the base class).
Example:
# include using namespace std
Class Base {public: virtual void f (); virtual void print ();}; void Base::f () {cout