[h1]一、类模板介绍[/h1]在初级篇的类的扩展中,对模板类进行了初步的介绍,今天将对类模板进行一系列比较深入的学习。在开始接触模板时候,经常听到“类模板”和“模板类”两个名词。首先要澄清“模板”本身的内含,模板本身指的是一组类似操作行为,所以可以衍生出函数模板和类模板。而在实际应用过程,一个模板却不能同时展现这些操作,需要实例化成某个具体的操作。即展现为模板类(模板函数这个概念是不严格的,但不要较真)。在常见的BOOST和STL库中,大量的应用了类模板。
[h1]二、定义[/h1]先看一下cppreference的定义:- template < 形参列表 > 类声明 (1)export template < 形参列表 > 类声明 (2) (C++11 前)
复制代码 类声明:即声明的类名成为模板名。形参列表:以逗号分隔的非空的模板形参列表,其必须为非类型形参、类型形参、模板形参或任何这些形参的形参包之一。同样,再来一个比较接地气的声明:- //typename可以用class来替代template class 类名称{ 类体;}
复制代码 看定义再清楚也不如来个例子明白,先看一个简单的模板类的例子:
[code]templateclass Common{public: Common(T t, U u) { this->t_ = t; this->u_ = u; } ~Common() {}public: T GetT() { return t_; } U GetU() { return u_; }private: T t_; U u_;};int main(){ Common com(10,100); int t = com.GetT(); int u = com.GetU(); std::cout |
|