Write down the C++ class which implements the stack utilizing the dynamically allocated array. The initial size of the particular stack must be evaluated when it is generated. When the stack fills up, you should increase the size of array so that additional elements may be pushed onto the stack. Be sure to implement the suitable constructors, destructors and overload any relevant operators.