Destructor — yes. This is the first explanation of this matter I found:
http://www.programmerinterview.com/index.php/c-cplusplus/virtual-destructors/[
^].
Constructor?.. Yes, in some languages,
never in C++. Same thing about static functions, by the way. The conception of virtual constructors and static functions is extremely powerful, maybe too powerful for C++. I miss it.
The implementation of
push
I would leave you for a easy home assignment (also, you did not clearly formulate this little problem). Pretty useful exercise, anyway.
Good luck,
—SA