中国高校课件下载中心 》 教学资源 》 大学文库

南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 7-模板

文档信息
资源类别:文库
文档格式:PPT
文档页数:16
文件大小:158.5KB
团购合买:点击进入团购
内容简介
南京航空航天大学:《程序设计》课程教学课件(PPT讲稿,二)Chapter 7-模板
刷新页面文档预览

模板第7章陈哲教授南京航空航天大学计算机科学与技术学院

1 第7章 模板 陈哲 教授 南京航空航天大学 计算机科学与技术学院

7.1函数模板模板的本质:带有部分“空白”的代码块(函数类),编译器自动“填空”后形成完整的代码块函数模板并不是真正意义上的函数,编译器遇到函数调用时,将根据实参类型和函数模板一起产生函数代码。定义形式:template返回值类型函数名(形式参数表)Y函数体

2 7.1 函数模板 • 模板的本质:带有部分“空白”的代码块(函数、 类),编译器自动“填空”后形成完整的代码块。 • 函数模板并不是真正意义上的函数,编译器遇到 函数调用时,将根据实参类型和函数模板一起产 生函数代码。定义形式: template 返回值类型 函数名 ( 形式参数表 ) { // 函数体 }

从函数重载到函数模板7.1.1,函数重载是函数名相同,参数一定不完全相同,采用函数重载,要对每个函数分别写出相应的代码,例如:

3 7.1.1 从函数重载到函数模板 • 函数重载是函数名相同,参数一定不完全相同,采 用函数重载,要对每个函数分别写出相应的代码。 例如:

int square(int number)return number * number ;float square(float number)Yreturn number * number ;采用函数模板实现square:template T square(T number)Yreturn number * number ;

int square ( int number ) { return number * number ; } float square ( float number ) { return number * number ; } 采用函数模板实现square: template T square ( T number ) { return number * number ; }

【例7.1】函数模板应用举例。template T square(Tnumber)return number * number ;int main ()int userlnt:float userFloat ;cin>> userlnt >> userFloat cout<<"它们的平方分别是:cout<<square(userlnt)<< square(userFloat);return 0;7-1.cpp

【例7.1】函数模板应用举例。 template T square ( T number ) { return number * number ; } int main ( ) { int userInt ; float userFloat ; cin >> userInt >> userFloat ; cout << "它们的平方分别是:" ; cout << square ( userInt ) << square ( userFloat ); return 0; } 7-1.cpp

定义函数模板的方法7.1.2(1)定义一个普通的函数void swap(int &varl,int &var2)int temp;varl=var2;temp=varl;var2=temp;(2)在函数开头加上template,将函数形参的类型和局部变量temp的类型int采用T替换

6 7.1.2 定义函数模板的方法 (1) 定义一个普通的函数 void swap ( int &var1 , int &var2 ) { int temp ; temp = var1 ; var1 = var2 ; var2 = temp ; } (2) 在函数开头加上template ,将函数形参 的类型和局部变量temp的类型int采用T替换

在函数模板中使用多种类型7.1.3函数模板中可以使用多种通用类型,每个类型必须具有自己的参数:T2>template < class T1,class&var2)void swap(T1 &varl,T2T1 temp ;temp = varl :var1 =(T1)var2 ;var2 =(T2)temp ;

7 7.1.3 在函数模板中使用多种类型 • 函数模板中可以使用多种通用类型,每个类型必 须具有自己的参数: template void swap ( T1 &var1 , T2 &var2 ) { T1 temp ; temp = var1 ; var1 = ( T1 ) var2 ; var2 = ( T2 ) temp ; }

函数模板重载7.1.4template sum(T valueOne,T valueTwo)return valueOne+valueTwo;形式之一templateT sum(T valueOne,T valueTwo,T valueThree)return valueOne+valueTwo + valueThree;调用形式:sum(numl,num2)sum(numl,num2,num3)

8 7.1.4 函数模板重载 template T sum ( T valueOne , T valueTwo ) { return valueOne + valueTwo ; } template T sum ( T valueOne , T valueTwo , T valueThree ) { return valueOne + valueTwo + valueThree ; } 调用形式:sum ( num1 , num2 ); sum ( num1 , num2 , num3); 形 式 之 一

函数模板重载7.1.4float sum(float valueOne,float valueTwo)Yreturn valueOne+valueTwo;形式之二template T sum(T valueOne,T valueTwo,T valueThree)return valueOne +valueTwo +valueThree;

9 7.1.4 函数模板重载 float sum ( float valueOne , float valueTwo ) { return valueOne + valueTwo ; } template T sum ( T valueOne , T valueTwo , T valueThree ) { return valueOne + valueTwo + valueThree ; } 形 式 之 二

类模板7.2·类模板使程序员可以创建一般形式的类,而不必编写处理不同数据类型的类,类模板的定义和实现必须在同一个文件中通常是头文件。编译器看到模板实现时才展开模板。·例7-4:带有下标越界检测功能的数组模板

7.2 类模板 • 类模板使程序员可以创建一般形式的类,而 不必编写处理不同数据类型的类。 • 类模板的定义和实现必须在同一个文件中, 通常是头文件。编译器看到模板实现时才展 开模板。 • 例7-4:带有下标越界检测功能的数组模板

共16页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档