编写异常安全代码的深入探讨
1. 更优的栈实现(Stack 类)
首先,我们要实现一个更优的 Stack 类,它对类型 T 的要求更少,并且拥有一个非常优雅的 operator=() 。假设 StackImpl 中的 /*????*/ 注释代表 protected ,我们要使用 StackImpl 作为私有基类来实现以下版本的 Stack 类的所有成员函数:
template <class T>
class Stack : private StackImpl<T>
{
public:
Stack(size_t size=0);
~Stack();
Stack(const Stack&);
Stack& operator=(const Stack&);
size_t Count() const;
void Push(const T&);
T& Top(); // if empty, throws exception
void Pop(); // if empty, throws exception
};
同时,要确保所有函数都是异常安全和异常中立的。
1.1 默认构造函数
使用私有基类方法, St
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



