第13章泛型机制—模板

第13章泛型机制—模板

ID:1165315

大小:334.50 KB

页数:43页

时间:2017-11-08

第13章泛型机制—模板_第1页
第13章泛型机制—模板_第2页
第13章泛型机制—模板_第3页
第13章泛型机制—模板_第4页
第13章泛型机制—模板_第5页
资源描述:

《第13章泛型机制—模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第13章泛型机制—模板类模板的定义类模板的实例化模板的编译非类型形参和参数的默认值类模板的友元类模板作为基类类模板的定义类模板允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数或返回值能取任意数据类型。定义格式:templateclassArray{intlow;inthigh;T*storage;public:Array(intlh=0,intrh=0):low(lh),high(rh){storage=ne

2、wT[high-low+1];}Array(constArray&arr);Array&operator=(constArray&a);T&operator[](intindex);~Array(){delete[]storage;}};类模板的成员函数的定义类模板的成员函数都是函数模板,模板参数与类模板相同形式:Template<模板形参>返回类型类模板名<形式参数>::成员函数名(函数的形参表){函数体}Array类的成员函数的格式template返回类型Array::函数名(形式参数表){函数体}Array的成员函数的实现template<

3、classT>Array&Array::operator=(constArray&a){if(this==&a)return*this;//防止自己复制自己delete[]storage;//归还空间low=a.low;high=a.high;storage=newT[high-low+1];for(inti=0;i<=high-low;++i)storage[i]=a.storage[i];return*this;}templateArray::Array(constArray&arr){low=arr.low;high

4、=arr.high;storage=newT[high-low+1];for(inti=0;iT&Array::operator[](intindex){if(index

5、

6、index>high){cout<<"下标越界";exit(-1);}returnstorage[index-low];}第13章泛型机制—模板类模板的定义类模板的实例化模板的编译非类型形参和参数的默认值类模板的友元类模板作为基类类模板的实例化编译器从模板生成一个特定

7、的类或函数的过程称为模板的实例化。类模板实例化后形成一个模板类。类模板的实例化格式如下:类模板名<模板的实际参数>对象名;如:Arrayarray1(20,30);Arrayarray2(10,20);模板类的对象的使用我们可以用下列语句输入array2的值:for(i=10;i<=20;++i)array2[i]=0.1*i;也可以用下列语句输出array1的值:for(i=20;i<=30;++i)cout<

8、板作为基类模板的编译编译模板时,编译器进行三个阶段的检查第一阶段是编译模板定义本身。这个阶段编译器只是检查一些诸如漏掉分号、变量名拼写错误之类的语法错误。第二阶段是编译器看到模板使用时。对于函数模板,检查实际参数的数目和类型是否恰当。对于类模板可以检测出提供的模板的实际参数的数目是否正确。第三阶段是实例化。编译器彻底编译模板。所以,调试包含类模板的程序时,必须在定义了类模板的对象并且对对象调用了所有的成员函数后,才能说明类模板的语法是正确的。第13章泛型机制—模板类模板的定义类模板的实例化模板的编译非类型形参和参数的默认值类模板的友元类模板作为基类非类型形参模板的形式

9、参数不一定都是类型,也可以是非类型的参数。在模板实例化时,类型参数用一个系统内置类型的名字或一个用户已定义类的名字作为实际参数,而非类型参数将用一个值作为实际参数。非类型的模板实参的值必须是编译时的常量。非类型形参实例定义了一个安全的、可指定下标范围的、且下标范围必须是编译时的常量的类模板Array。(相当于C++中的普通数组)设计考虑在定义类模板时,数组的大小是不知道的,但在编译时必须给出。这可以通过非类型参数实现:该类模板有三个模板参数:数组元素的类型、数组下标的上下界。前者为类型参数,后者为非类型参数。类定义template

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。