本文转载自鸡啄米,有关模板类的更多特性,可参考C++类模板,你看我就够了
代码复用是面向对象设计中的重要的软件开发思想,对于软件开发效率很是关键。怎样做好代码复用呢?越是通用的代码越好复用,将类型作为参数,这种程序设计类型就是参数化程序设计。模板就是C++进行参数化设计的工具。利用模板我们可以使用同一段程序处理不同类型的对象。
什么是类模板呢?类模板就是为类声明一种模板,使得类中的某些数据成员,或某些成员函数的参数,又或者是某些成员函数的返回值可以取任意的数据类型,包括基本数据类型和自定义数据类型。
类模板的声明形式如下:
我们看到,在类的声明之前要加上一个模板参数表,模板参数表里的类型名用来说明成员数据和成员函数的类型,等会可以看下面的例子。
模板参数表中可以以下两种模板参数:
class 标识符(指明可以接受一个类型参数,就是说这是个不固定的类型,用它生成类时才会产生真正的类型)
类型说明符 标识符(指明可以接受一个由“类型说明符”所指定类型的常量作为参数)
模板参数表可以包含一个或多个以上两种参数,多于一个时各个参数之间用逗号分隔。鸡啄米提醒大家注意的是,类模板的成员函数必须是函数模板。实际上,类模板并不是有实际意义的代码,它只是一些具有相似功能的类的抽象,就是把这些类的共有部分写成模板,类型作为参数,只有用类模板生成类时才会根据需要生成实际的类的代码。
用类模板建立对象时的声明形式为:
模板<模板参数表> 对象名1,…,对象名n;
此处的模板参数表是用逗号分隔开的若干类型标识符或常量表达式构成。它与上面类模板声明时“模板参数表”中的参数是一一对应的。类型标识符与类模板中的“class 标识符”对应,常量表达式与“类型说明符 标识符”对应。这样声明对象之后系统会根据指定的参数类型和常量值生成一个类,然后建立该类的对象。
鸡啄米:C++编程入门系列之十六(类与对象:类模板)
鸡啄米最后给大家一个简单明了的例子:
上面这个程序的运行结果是:
类是对对象的抽象,类模板是对类的抽象。鸡啄米最后跟大家说明下,如果觉得类模板太难理解,也没关系,这毕竟不是软件开发中必须用到的东西,等大家对C++有了一些心得,再想想如何用类模板实现代码复用也是可以的。