- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 Nclass 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
您可能关注的文档
- Bodie2e_Chapter02 Financial Markets and Institutions 英文版PPT 金融学(第二版)教程文件.ppt
- Bodie2e_Chapter02 Financial Markets and Institutions 英文版PPT金融学(第二版) 教程文件.ppt
- Bodie2e_Chapter03 Managing Financial Health and Performance 英文版PPT金融学(第二版) 幻灯片课件.ppt
- Bodie2e_Chapter04 Allocating Resources Over Time 英文版PPT 金融学(第二版)知识讲稿.ppt
- Bodie2e_Chapter04 Allocating Resources Over Time 英文版PPT金融学(第二版) 知识讲稿.ppt
- Bodie2e_Chapter05 Household Saving and Investment Decisions 英文版PPT 金融学(第二版)教学文稿.ppt
- Bodie2e_Chapter05 Household Saving and Investment Decisions 英文版PPT金融学(第二版) 教学文稿.ppt
- Bodie2e_Chapter06 The Analysis of Investment Projects 英文版PPT金融学(第二版) 教学文稿.ppt
- Bodie2e_Chapter06 The Analysis of Investment Projects 英文版PPT 金融学(第二版)教学文稿.ppt
- Bodie2e_Chapter07 Principles of Market Valuation 英文版PPT 金融学(第二版)教学文稿.ppt
文档评论(0)