Chapter9类属机制-模板.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主要内容  类属(泛型)的基本概念  函数模板  类模板  模板的复用  C++标准模板库简介 类属基本概念   在程序设计中,经常需要用到一些功能完全相同的程序实体,但它们所涉及的数据类型不同。例如,对不同元素类型的数组进行排序的函数: void int_sort( int x[] , int num); void double_sort( double x[] , int num); void A_sort( A x[] , int num);   这三个函数的实现基本是一样的。 类属基本概念 class IntStack{ int buf[100]; public: bool push(int); bool pop(int); }; 类 属   直接将数据类型作为参数,这种机制称为类属(genericity)。   具有类属性质的程序实体有类属函数以及类属类。   在C++中,可以采用模板(template)机制实现类属,分别称为函数模板和类模板。  类属函数   函数模板是指带有类型参数的函数定义,其格式如下: template class T1, class T2, ... 返回值类型 函数名(参数表){函数体}  T1、T2等是函数模板的类型参数  返回值类型 、参数表中的参数类型以及函数体中的局部变量的类型可以是T1、T2等。  类属函数  使用函数模板时,首先必须要对函数模板进行实例化(生成具体的函数)。  函数模板的实例化通常是隐式的,由编译程序根据实参的类型自动地把函数模板实例化为具体的函数。  有需要时,也可在程序中显式地实例化函数模板。 匹配规则  如果某一函数的参数类型正好与函数调用的实际参数类型匹配,则调用该函数。  如果能从同名的类属函数实例化一个函数实例,而该函数的参数类型正好与函数调用的实际参数类型匹配,则调用该实例化的函数,否则:  对函数调用的实际参数作隐式类型转换后与非类属函数再作匹配,找到匹配的函数则调用它,否则提示语法错误 思 考   将本章开始时的sort排序函数写成模板,并调用验证。 类属类 由C++语言的模板定义的类称为类属类 template class T1,class T2,...   class 类名   {类成员说明}  T1、T2等为类模板的类型参数,在类成员的说明中可以使用T1、T2等作为它们的类型。 类属类  类属类必须显式实例化之后才可以被用来创建对象:用某一数据类型替代类属类的类型参数。  在类属类定义之外使用类属类的名字时,必须给出类属参数。 思 考   将本章开始时的Stack类写成模板,并调用验证。 STL  STL:标准模板库,包含了一些常用算法模板(如排序查找函数模板)和容器类模板(如集合类模板,栈类模板)。  容器用于存储数据元素。算法用于对容器进行操作。每个容器类都有若干个与之对应的迭代器类,通过迭代器来遍历和访问容器内的元素。 Chapter 9 类属机制-模板  可否用一个函数来解决? class DoubleStack{ double buf[100]; public: bool push(double); bool pop(double); }; class AStack { A buf[100]; public: bool push(A); bool pop(A); }; 三个类的实现基本一样 可否用一个类来解决?

文档评论(0)

aa15090828118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档