// ... (continuation of LinkedStack)
protected: // protected utilities
void removeAll() // remove entire stack contents
{ while (!isEmpty()) pop(); }
void copyFrom(const LinkedStack& ls); // copy from ls
public:
LinkedStack(const LinkedStack& ls) // copy constructor
{ copyFrom(ls); } // copy new contents
// assignment operator
LinkedStack& operator=(const LinkedStack& ls) {
if (this != &ls) { // avoid self copy (x = x)
removeAll(); // remove old contents
copyFrom(ls); // copy new contents
}
return *this;
}
~LinkedStack() // destructor
{ removeAll(); } // destroy old contents