I l@ve RuBoard Previous Section Next Section

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!

    I l@ve RuBoard Previous Section Next Section