Chapter 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!
Solution
Count()
The easiest of all Stack
's members ...
Get Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.