Item 10. Writing Exception-Safe Code桺art 3
Difficulty: 9½
Are you getting the hang of exception safety? Well, then, it must be time to throw you a curve ball. So get ready, and don't swing too soon.
Now for the final piece of Cargill's original Stack template.
template <class T> class Stack
{
public:
Stack();
~Stack();
Stack(const Stack&);
Stack& operator=(const Stack&);
size_t Count() const;
void Push(const T&);
T Pop(); // if empty, throws exception
private:
T* v_; // ptr to a memory area big
size_t vsize_; // enough for 'vsize_' T's
size_t vused_; // # of T's actually in use
};
Write the final three Stack functions: Count(), Push(), and Pop(). Remember, be exception-safe and exception-neutral!
|