Item 10. Writing Exception-Safe
Code—Part 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!
|