C ++ |使用STL deque和Adapter设计实现堆栈

时间:2016-01-24 21:20:46

标签: c++ stack deque

为考试做好准备并传递了我无法自信地回答的这个问题。 假设我们需要使用STL deque和Adapter设计来实现Stack,以下是正确的方法:(只能有一个答案)

1. template <typename T> class stack: public deque<T> {};
2. template <typename T> class stack {private: deque<T>* dptr; };
3. template <typename T> class stack {protected: deque<T>* dptr; };
4. template <typename T> class stack {private: deque<T> {};}
5. template <typename T> class stack: private deque<T> {};
6. template <typename T> class stack {protected: deque<T> d; };

任何有关解决方案的提示都将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

您永远不想公开从STL容器继承。他们根本就不是为它设计的,因为&#34;随时付费&#34;他们没有虚拟析构函数的原因。其他形式的继承只是创建未命名的成员,在这种情况下无法为您提供服务(它们对于使用C API 非常有用)。因此,排除1和5。所以现在你可以拥有一个私人或受保护的成员。选择受保护,因为为您继承的其他类打开选项。所以留下3和6.现在你想要的是值还是指针。这是一个STL容器,与原始指针不同,它可以在被破坏时愉快地管理自己的资源。所以6是明显的赢家。