首页 理论教育 C++STL支持成员模板:用于结构、类和模板类的成员

C++STL支持成员模板:用于结构、类和模板类的成员

时间:2023-10-25 理论教育 版权反馈
【摘要】:C++STL支持“成员模板”新特性,即模板可用作结构、类或模板类的成员。在完全实现STL设计的过程中,这项特性是必须使用的。成员模板的定义一般为:任意类可以拥有类模板或函数模板作为其成员。

C++STL支持成员模板:用于结构、类和模板类的成员

C++STL支持“成员模板”新特性,即模板可用作结构、类或模板类的成员。在完全实现STL设计的过程中,这项特性是必须使用的。成员模板的定义一般为:任意类(可以是类模板,也可以不是类模板)可以拥有类模板或函数模板作为其成员。在ISO/IEC14882:2003(E)中,关于成员模板的说明是:“一个模板可以在一个类或类模板中声明,这样的类模板称为成员模板;成员模板的定义既可以在类(或类模板)定义的内部,也可以在类(或类模板)定义的外部;当类模板的成员模板在类模板定义的外部定义时,应该完整地指定类模板参数和成员模板的参数。例如,

上述代码中的template<class T>是类模板,作为第一个模板形参表;template<class I>是成员模板,作为第二个模板形参表。例如,

上述代码在类模板string中,使用了另一个类模板类型的成员函数。再如,

上述代码举例说明了使用类模板作为另一类模板的成员。另外,成员模板具有如下一些使用规则。

•成员模板遵循常规访问控制。

•成员模板不能为虚(virtue)。

•局部类不能拥有成员模板。(www.xing528.com)

•析构器不能是模板类型。

•成员函数模板不能重载基类的虚函数。

•成员模板具有复杂的转换功能。

总结

小节的重点是对成员模板的理解。最简单的理解为:在类模板中包含了类模板,被包含的类模板作为其成员。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈