C++程序设计教程14 第十四章 节 模板.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++程序设计教程14 第十四章 节 模板.ppt

C++程序设计教程(第二版);思考角度 C++程序是一些类型和函数,编程就是设计类型和函数,然后按C++的程序结构来组织 模板编程   世界上万事万物都具有相似性,许多类型和函数尽管处理的数据不同,但其行为也具有相似性,将相似的类型归为类型族以及相似的函数归为函数族的编程,就是模板编程 编程方法的侧重点 面向对象编程解决类体系中的不同对象行为表现 模板编程解决独立类之间的不同对象行为表现 多个独立类可以是多个类继承体系,因而,面向对象编程与模板编程是融合的. ;第十四章内容;1. 函数模板 ( Function Template ) ;templatetypename T void swap(T a, T b) { T t=a; a=b; b=t; } ;数据形参分: 引用型参数(提倡用本项) 非引用型参数 引用型参数分: 引用型参数 常量引用型参数;常量引用型形参;引用型形参;函数模板重载;3. 类模板 ( Class Template ) ;通过模板类定义,可以解决代码冗繁问题: templatetypename T class Node{ public: Node(const T d):c(d),next(0),pref(0){} T c; Node *next, *pref; };;又例如下面的模板类定义,含有模板类的成员: templatetypename T class List{ NodeT *first, *last; public: List(); void add(const T c); void remove(const T c); NodeT* find(const T c)const; void print()const; ~List(); };;与类定义相似,成员函数的定义一般放在类定义的外部,与类定义分开.以有利于程序的组织.放在模板类定义外部的成员函数的定义形式为:;类模板(class template):侧重于模板的描述 (声明或定义),例如: Templatetypename Tclass List;//类模板声明 templatetypename T //类模板定义 class List{ NodeT *first, *last; public: List(); void add(const T c); void remove(const T c); NodeT* find(const T c)const; void print()const; ~List(); };;高级模板概念中,类模板声明,如: Templatetypename Tclass List 等同于带有形式类型参数的模板类,如:ListT 并将其作为一种类型看待 所以本质上不区分类模板与模板类.;模板类的使用将直接透入对象的构造,因此,允许模板类带有值参便理所当??了. templateunsigned int N class bitset; 但是类型值参将导致不同的类模板描述,因而决定了不同的值参值,生成不同的模板类 bitset100 a; bitset200 b; a = b; // error 值参值应为编译能识别的常量,值参多为整型.;4. 实例化与定做 ( Instantiation Specialization ) ;实例化与实施的操作有关,构造对象所触发的实例化,只实例化其构造函数,不实例化类模板的其他成员函数.但可以通过显式请求,强制整体实例化.;对于特定的类型实参,希望其行为不同于类模板所规定的操作,可以根据该实参来定做,定做的模板称为模板铸件(或称特制模板),如: template class ListCat{ NodeCat *first, *last; public: List(); void add(const Cat c); void remove(const Cat c); NodeCat* find(const Cat c)const; void print()const; ~List(); };;模板铸件可为类,亦可为模板.若为模板,则其定做称为局部定做. ;5. 程序组织 ( Program Organization ) ;模板使用 //x.cpp #include”tlist.h” int main(){ Listdouble dList; dList.add(3.6); dList.print(); Listint iList; iList.add(5); iList.add(8); iLi

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档