理论是可以的。比如:
#include
template>
class mylist : public std::list<_Tp, _Alloc>
{
public:
//... 你的扩充代码 ...
};
不过从比较严格的编码规范来说,不太推荐从STL容器继承。因为,严格的说,一个类如果它允许有派生类,它的析构数应该被定义虚函数,而STL容器的析构函数并没有被定义的虚函数。
最安全的方式是使用组合及代理的模式。不过使用组合并不优雅,你需要增加好多重复的代码(要把list的每个函数重新定义一次 :()。
你要实现什么功能,一般通过这些函数都是可以实现的。你继承之后可能会造成代码冗余,臃肿。