模板的概念是仅在C++语言的高版本中才引进的模板(temp....ppt

模板的概念是仅在C++语言的高版本中才引进的模板(temp....ppt

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模板的概念是仅在C语言的高版本中才引进的模板(temp...

* 第三章 模 板 模板的概念是仅在C++语言的高版本中才引进的。模板(template)是一 种参数化的类型,在有模板概念之前,C++语言的程序员热衷于涉及“类属类” (Genericdass),其目标是为了实现程序代码的可重用性,通过“类属编程”使得同一结构的不同实例共用同样的代码,这样的类属数据结构包括:栈,队列,数组,矩阵,链表,二叉树,散列表和图等等。这项工作的意义是明显的,这样的类库应用很广,可以节省代码,易于维护;当然,类属类的编程也十分繁琐。 C++(高版本)的模板支持类屑编程,大大简化了类屑数据结构的编程工作。熟练地使用模扳概念,是高级的c++程序员的必要条件之一。 类模板是一种带参类,或说是具有共性的一组类。模板增加了以类为特征的程序模块的通用性。 例如,集合、矩阵,链表都可以设计成类。但是如果采用模板的形式,则编程的效率更高。例如,集合类,根据集合类元素的不同类型,如int型,char型,float型,pomt型,complex型等等,可以是系统类型,也可以是用户定义类型。总之对于每一种元素类型,可以定义一个集合类。利用模板的形式,以类型为参数,可以定义一个 集合(set)模板,每指定一种类型作为“实参”,这个模板就成为一个特定的集合类。 函数模板也有类似的特征。 模板说明 C++支持两类的模板,它们分别是类模板与函数模板。下面就分别对这两类模板进行讨论。 3. 1 类模板说明 类模板的说明就是一个带有类型参数的类定义,其格式为; template棋板参数表class类模板名 {类模板定义体}, 说明: template:关键字,指明本说明为类模板说明或函数模板说明。 摸板参数表;用尖括号 括起来,其量简单的形式是class T,T为类参数名。 class:关键字class指出定义的是类模板. 类模板名;标识符。 类模板定义体:它实际上是一个类的定义,在定义中,以类参数T(标识符)作为某一类或类型名。例如: templateclass Yclass Set{ T elems[maxcard]; int card; public: Set( ){card=O}; …… //其他成员函数说明 }; 下面是与类模板有关的几个问题: (1)类模板的实例化。 类模板不能直接生成对象,因为其类型参数是不确定的,故须首先对模板参数指定“实参”,实例化的形式为; 类模板名具体类型 例如: Setint Setfloat Setchar 这实际上给出了三个具体的集合类。 Setintsl,s2; 即是说明了两个整型集合的对象sl,s2。 由此可以看出,每个类模板的实例就是一个具体的类,由类模板 的实例可以说明或创建该类的对象。 也可以用由用户定义的类类型来进行实例化.例如,我们已经定义了类complex,类point,于是可以用complex和point作为“实参”来对于类模板Set进行实例化: Set(complex) Set(point) 这两个集合类的元素是复数——类complex的对象,点——类point的对象。 (2)类模板定义中的函数成员可以是内联的(在类内定义),也可以在类外定义,其书写格式为: template(class Tint setT::memberT elem{ for(int i=0;icard;i++) if(elems[i]==elem) return l; return 0; }; (3)类模板也可以继承。可分为下面几种情况说明: ①一般类作基类,派生出类模板。例如: class CB{ int i; char c;

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档