准备考试并回答了我无法自信回答的问题。假设我们需要使用STL双端队列和适配器设计来实现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; };
解决方案的任何技巧将不胜感激。谢谢。
您永远不想公开地从STL容器继承。他们根本不是为它设计的,因为出于“现收现付”的原因,它们没有虚拟析构函数。其他形式的继承只是创建未命名成员,在这种情况下,它们将无济于事(它们对于使用C API等很有用)。这样就排除了1和5。因此,现在您可以拥有一个私有成员或受保护成员。选择protected,因为这会使其他继承自您的类的选项保持打开。这样就剩下3和6了。现在您要按值还是指针。这是一个STL容器,在被破坏时可以很高兴地管理自己的资源,这与原始指针不同。所以6是明显的赢家。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句