- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计课程介绍-第13章泛型机制—模板参考
第13章 泛型机制—模板 类模板的定义 类模板的实例化 模板的编译 非类型形参和参数的默认值 类模板的友元 类模板作为基类 类模板的定义 类模板允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数或返回值能取任意数据类型。 定义格式: template class 标识符〉 class 类名{//…}; 类模板实例 定义一个泛型的、可指定下标范围的、安全的数组 类模板定义 template class T class Array { int low; int high; T *storage; public: Array(int lh = 0, int rh = 0): low(lh), high(rh) {storage = new T [high - low + 1]; } Array(const Array arr); Array operator=(const Array a); T operator[](int index); ~Array() {delete [] storage; } }; 类模板的成员函数的定义 类模板的成员函数都是函数模板,模板参数与类模板相同 形式: Template模板形参 返回类型 类模板名形式参数::成员函数名(函数的形参表) {函数体} Array类的成员函数的格式 template class T 返回类型 ArrayT::函数名(形式参数表) {函数体} Array的成员函数的实现 template class T ArrayT ArrayT::operator=(const ArrayT a) { if (this == a) return *this; //防止自己复制自己 delete [] storage; // 归还空间 low = a.low; high = a.high; storage = new T [high - low + 1]; for (int i=0; i = high - low; ++i) storage[i] = a.storage[i]; return *this; } template class T ArrayT::Array(const ArrayT arr) { low = arr.low; high = arr.high; storage = new T [high - low + 1]; for (int i = 0; i high -low + 1; ++i) storage[i] = arr.storage[i]; } template class T T ArrayT::operator[](int index) { if (index low || index high) {cout 下标越界; exit(-1); } return storage[index - low]; } 第13章 泛型机制—模板 类模板的定义 类模板的实例化 模板的编译 非类型形参和参数的默认值 类模板的友元 类模板作为基类 类模板的实例化 编译器从模板生成一个特定的类或函数的过程称为模板的实例化。 类模板实例化后形成一个模板类。 类模板的实例化格式如下: 类模板名模板的实际参数 对象名; 如: Arrayint array1(20,30); Arraydouble array2(10, 20); 模板类的对象的使用 我们可以用下列语句输入array2的值: for (i=10; i=20; ++i) array2[i] = 0.1 * i; 也可以用下列语句输出array1的值: for (i=20; i=30; ++i) cout array1[i] \t; 第13章 泛型机制—模板 类模板的定义 类模板的实例化 模板的编译 非类型形参和参数的默认值 类模板的友元 类模板作为基类 模板的编译 当编译器看到模板的定义时,它不立即产生代码。只有看到用到模板时,如定义类模板的对象时,编译器才产生特定类型的模板实例。 类模板的成员函数本身是模板函数。类模板的成员函数只有在为程序所用时才进行实例化。如果该成员函数从未被使用,则不会实例化该成员函数。 第13章 泛型机制—模板 类模板的定义 类模板的实例化 模板的编译 非类型形参和参数的默认值 类模板的友元 类模板作为基类 非类型形参 模板的形式参数不一定都是类型,也可以是非类型的参数。 在模板实例化时,类型参数用一个系统内置类型的名字
您可能关注的文档
- 2017新版部编本二年级上册语文《语文园地3-7》原创教学课件参考.ppt
- 2017新版部编本二年级上册语文识字2《树之歌》教学课件设计课件参考.ppt
- 2017新版部编本二年级上册语文识字3《拍手歌》名师课件(第一课时)参考.ppt
- 2017新版部编本二年级上册语文课文《雾》-参考.ppt
- 2017新版部编本二年级上册语文识字3《拍手歌》参考.ppt
- 2017新版部编版一年级语文下册语文园地七课件参考.ppt
- 2017新版部编本二年级上册语文识字3《拍手歌》2参考.ppt
- 2017新苏教版一年级下册语文《乌鸦喝水》课件参考.ppt
- 2017新版部编本二年级上册语文识字2《树之歌》参考.ppt
- 2017新版静夜思参考.ppt
文档评论(0)