




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006 模板把函数或类要处理的数据类型参数化,表现为参数的多态模板把函数或类要处理的数据类型参数化,表现为参数的多态 性,称为类属。性,称为类属。 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据模板用于表达逻辑结构相同,但具体数据元素类型不同的数据 对象的通用行为。对象的通用行为。2.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.1 9.1 什么是模板什么是模板9.2 9.2 函数模板函数模板9.3 9.3
2、类模板类模板小结小结3.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006类属类属 类型参数化,又称参数模板类型参数化,又称参数模板 使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递C+提供两种模板机制:函数模板函数模板类模板类模板4.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006模板(函数模板和类模板)模板函数模板类对象5.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006 考虑求两参数之中大值函数:max
3、( a , b )对 a , b 的不同类型,都有相同的处理形式:return ( a b ) ? a : b ;用已有方法解决对不同数据类型处理:(1)宏替换# define max ( a , b ) ( a b ? a : b )问题问题 避开类型检查(2)重载问题问题 需要许多重载版本(3)使用函数模板使用函数模板7.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006 重载函数通常基于不同的数据类型实现类似的操作重载函数通常基于不同的数据类型实现类似的操作 对不同数据类型的操作完全相同,用函数模板实现更为简洁方便对不同数据类型的操作完全相同,用函数模板实现更为
4、简洁方便8.华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.2.1 模板说明template 声明模板中使用的类属参数。形式为 9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.2.1 模板说明template 声明模板中使用的类属参数。形式为 关键字关键字9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.2.1 模板说明template 类型形式参数的形式为:typename T1 , typename T2 , , ty
5、pename Tn 或class T1 , class T2 , , class Tn 声明模板中使用的类属参数。形式为 9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006类型形式参数的形式为:typename T1 , typename T2 , , typename Tn 或class T1 , class T2 , , class Tn 9.2.1 模板说明template 声明模板中使用的类属参数。形式为 关键字关键字9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20
6、062006类型形式参数的形式为:typename T1 , typename T2 , , typename Tn 或class T1 , class T2 , , class Tn 9.2.1 模板说明template 声明模板中使用的类属参数。形式为 类属参数类属参数9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template template template 9.2.1 模板说明template 声明模板中使用的类属参数。形式为 例如例如9.2.1 9.2.1 模板说明模板说明华南理工大学计算机学院华南理工大学计
7、算机学院 周霭如周霭如 200620069.2.2 函数模板与模板函数template 类型类型 函数名函数名 ( 形式参数表形式参数表 ) 语句序列语句序列 函数模板声明函数模板声明 函数模板定义由模板说明和函数定义组成函数模板定义由模板说明和函数定义组成 模板说明的类属参数必须在函数定义中至少出现一次模板说明的类属参数必须在函数定义中至少出现一次 函数参数表中可以使用类属类型参数,也可以使用一般类型参数函数参数表中可以使用类属类型参数,也可以使用一般类型参数 9.2.2 9.2.2 函数模板与模板函数函数模板与模板函数华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620
8、06#include template T max ( T a , T b ) return a b ? a : b ; void main ( ) cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; cout max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) endl ;例例9-1 简单函数模板应用简单函数模板应用9.2.2 函数模板与模板函数华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include void
9、main ( ) cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; cout max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) endl ;函数模板函数模板9.2.2 函数模板与模板函数例例9-1 简单函数模板应用简单函数模板应用华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include void main ( ) cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout m
10、ax ( y , e ) is max ( y , e ) endl ; cout max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) b ? a : b ; 由实参类型实例化由实参类型实例化9.2.2 函数模板与模板函数例例9-1 简单函数模板应用简单函数模板应用华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include void main ( ) cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; cout ma
11、x ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) b ? a : b ; 由实参类型实例化由实参类型实例化char max ( char a , char b ) return a b ? a : b ; 9.2.2 函数模板与模板函数例例9-1 简单函数模板应用简单函数模板应用华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include void main ( ) cout max ( 3 , 5 ) is max ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; c
12、out max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) b ? a : b ; 由实参类型实例化由实参类型实例化char max ( char a , char b ) return a b ? a : b ; double max ( double a , double b ) return a b ? a : b ; 9.2.2 函数模板与模板函数例例9-1 简单函数模板应用简单函数模板应用华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include void main ( ) cout max ( 3 , 5 ) is max
13、 ( 3 , 5 ) endl ; cout max ( y , e ) is max ( y , e ) endl ; cout max ( 9.3 , 0.5 ) is max ( 9.3 , 0.5 ) b ? a : b ; char max ( char a , char b ) return a b ? a : b ; double max ( double a , double b ) return a b ? a : b ; 编译器生成的编译器生成的模板函数模板函数程序执行时程序执行时匹配不同的版本匹配不同的版本9.2.2 函数模板与模板函数例例9-1 简单函数模板应用简单函数
14、模板应用华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break ; 例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板
15、 9.2.2 函数模板与模板函数华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break ; 模板声明模板声明9.2.2 函数模板
16、与模板函数例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break
17、; 类属参数类属参数9.2.2 函数模板与模板函数例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0
18、; if ( work ) break ; 普通类型参数普通类型参数9.2.2 函数模板与模板函数例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 ) temp = ai ; ai = ai+1 ;
19、 ai+1 = temp ; work = 0 ; if ( work ) break ; 类属类型变量类属类型变量9.2.2 函数模板与模板函数例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template void SortBubble ( ElementType *a , int size ) int i, work ; ElementType temp ; for (int pass = 1; pass size; pass + ) work = 1; for ( i = 0; i ai+1 )
20、 temp = ai ; ai = ai+1 ; ai+1 = temp ; work = 0 ; if ( work ) break ; 排序算法排序算法9.2.2 函数模板与模板函数例例9-2 9-2 冒泡排序法的函数模板冒泡排序法的函数模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.2.3 重载函数模板有些特殊情况需要函数模板参与重载例如例如template T max ( T a , T b ) return a b ? a : b ; void f ( int i , char c ) max ( i , i ) ;/ ok max ( c ,
21、c ) ;/ ok max ( i , c ) ;/ error,无法匹配 max ( c , i ) ;/ error 模板类型不能提供模板类型不能提供类型的隐式转换类型的隐式转换9.2.3 9.2.3 重载函数模板重载函数模板华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template T max ( T a , T b ) return a b ? a : b ; max ( a , b )/ 模板函数重载版本模板函数重载版本 return a b ? a : b ; 9.2.3 重载函数模板void f ( int i , char c ) max (
22、i , i ) ;/ ok max ( c , c ) ;/ ok / ok ,由系统提供隐式转换由系统提供隐式转换 / ok 9.2.3 9.2.3 重载函数模板重载函数模板华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int
23、 Max( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) is Max(9, 5, 23) endl ; 例例9-3 9-3 重载函数模板示例重载函数模板示例template T Max( const T a, const T b ) return ab ? a : b ; 函数模板函数模板9.2.3 重载函数模板华
24、南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Max( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is
25、Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) is Max(9, 5, 23) endl ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; template T Max( const T a, const T b ) return ab ? a : b ; 重载函数模板重载函数模板9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例
26、重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Max( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3
27、, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) is Max(9, 5, 23) endl ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; 用普通函数用普通函数重载函数模板重载函数模板int Max( const int a , const char b ) return ab ? a : b ; template T M
28、ax( const T a, const T b ) return ab ? a : b ; 9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Ma
29、x( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) is Max(9, 5, 23) endl ; 9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max(
30、 const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Max( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max
31、(9, 5, 23) is Max(9, 5, 23) endl ; 9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a, const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Max( const int
32、 a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) is Max(9, 5, 23) endl ; 9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006#include #include template T Max( const T a,
33、const T b ) return ab ? a : b ; template T Max( const T a, const T b , const T c) T t ; t = Max(a, b) ; return Max ( t, c ) ; int Max( const int a , const char b ) return ab ? a : b ; void main ( ) cout Max( 3, a ) is Max( 3, a ) endl ; cout Max(9.3, 0.5) is Max(9.3, 0.5) endl ; cout Max(9, 5, 23) i
34、s Max(9, 5, 23) endl ; 9.2.3 重载函数模板例例9-3 9-3 重载函数模板示例重载函数模板示例华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 200620069.2.3 重载函数模板 寻找和使用最符合函数名和参数类型的函数,若找到则调用它; 否则,寻找一个函数模板,将其实例化产生一个匹配的模板函数,若找到 则调用它; 否则,寻找可以通过类型转换进行参数匹配的重载函数,若找到则调用它 如果按以上步骤均未能找到匹配函数,则调用错误。 如果调用有多于一个的匹配选择,则调用匹配出现二义性。匹配约定匹配约定9.2.3 9.2.3 重载函数模板重载函数模板华南理工大
35、学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006 类模板用于实现类所需数据的类型参数化类模板用于实现类所需数据的类型参数化 类模板在表示如数组、表、图等数据结构显得特别重要,类模板在表示如数组、表、图等数据结构显得特别重要, 这些数据结构的表示和算法不受所包含的元素类型的影响这些数据结构的表示和算法不受所包含的元素类型的影响9.3 类模板华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006类模板由模板说明和类说明构成类模板由模板说明和类说明构成 template 类声明例如例如
36、 templateclass TClass / TClass的成员函数 private : Type DateMember ; /;类属参数必须至少类属参数必须至少在类说明中出现一次在类说明中出现一次 9.3.1 9.3.1 类模板与模板类类模板与模板类9.3 类模板华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter
37、( int index, const T & value ) ; protected : int size ; T * element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : E
38、nter(int index, const T& value) element index = value ; 例例9-4 一个数组类模板一个数组类模板 9.3 类模板华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int s
39、ize ; T * element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element index = va
40、lue ; templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int size ; T * element ; ;9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public :
41、Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int size ; T * element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ;
42、 template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element index = value ; templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, cons
43、t T & value ) ; protected : int size ; T * element ; ;数据成员是数据成员是 T T 类型指针类型指针 9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value
44、 ) ; protected : int size ; T * element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& val
45、ue) element index = value ; template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element ind
46、ex = value ; 类模板的成员函数是类模板的成员函数是 函数模板函数模板 9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int size ; T * eleme
47、nt ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element index = value ; #include
48、#include Array.hvoid main() Array IntAry( 5 ) ; int i ; for ( i = 0; i 5; i + ) IntAry.Enter ( i, i ) ; cout Integer Array : n ; for ( i = 0; i 5; i + ) cout IntAry.Entry(i) t ; coutendl ; Array DouAry( 5 ) ; for ( i = 0; i 5; i + ) DouAry.Enter ( i, (i+1)*0.35 ) ; cout Double Array : n ; for ( i =
49、0; i 5; i + ) cout DouAry.Entry(i) t ; coutendl;9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int size ; T
50、* element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element index = value ; #i
51、nclude #include Array.hvoid main() IntAry( 5 ) ; int i ; for ( i = 0; i 5; i + ) IntAry.Enter ( i, i ) ; cout Integer Array : n ; for ( i = 0; i 5; i + ) cout IntAry.Entry(i) t ; coutendl ; Array DouAry( 5 ) ; for ( i = 0; i 5; i + ) DouAry.Enter ( i, (i+1)*0.35 ) ; cout Double Array : n ; for ( i =
52、 0; i 5; i + ) cout DouAry.Entry(i) t ; coutendl;9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const re
53、turn element index ; template void Array : Enter(int index, const T& value) element index = value ; #include #include Array.hvoid main() IntAry( 5 ) ; int i ; for ( i = 0; i 5; i + ) IntAry.Enter ( i, i ) ; cout Integer Array : n ; for ( i = 0; i 5; i + ) cout IntAry.Entry(i) t ; coutendl ; Array Do
54、uAry( 5 ) ; for ( i = 0; i 5; i + ) DouAry.Enter ( i, (i+1)*0.35 ) ; cout Double Array : n ; for ( i = 0; i 5; i + ) cout DouAry.Entry(i) t ; coutendl;class Array public : virtual const & Entry( int index ) const ; virtual void Enter( int index, const & value ) ; protected : int size ; * element ; ;
55、9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学院 周霭如周霭如 20062006template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T size ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(
56、int index, const T& value) element index = value ; #include #include Array.hvoid main() IntAry( 5 ) ; int i ; for ( i = 0; i 5; i + ) IntAry.Enter ( i, i ) ; cout Integer Array : n ; for ( i = 0; i 5; i + ) cout IntAry.Entry(i) t ; coutendl ; Array DouAry( 5 ) ; for ( i = 0; i 5; i + ) DouAry.Enter
57、( i, (i+1)*0.35 ) ; cout Double Array : n ; for ( i = 0; i 5; i + ) cout DouAry.Entry(i) t ; coutendl;class Array public : virtual const & Entry( int index ) const ; virtual void Enter( int index, const & value ) ; protected : int size ; * element ; ;9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机学
58、院 周霭如周霭如 20062006templateclass Array public : Array ( int s ) ; virtual Array () ; virtual const T& Entry( int index ) const ; virtual void Enter( int index, const T & value ) ; protected : int size ; T * element ; ;template Array:Array(int s) if ( s 1 ) size = s ; else size = 1 ; element = new T si
59、ze ; template Array : Array() delete element ; template const T& Array : Entry ( int index ) const return element index ; template void Array : Enter(int index, const T& value) element index = value ; #include #include Array.hvoid main() Array IntAry( 5 ) ; int i ; for ( i = 0; i 5; i + ) IntAry.Ent
60、er ( i, i ) ; cout Integer Array : n ; for ( i = 0; i 5; i + ) cout IntAry.Entry(i) t ; coutendl ; DouAry( 5 ) ; for ( i = 0; i 5; i + ) DouAry.Enter ( i, (i+1)*0.35 ) ; cout Double Array : n ; for ( i = 0; i 5; i + ) cout DouAry.Entry(i) t ; coutendl;9.3 类模板例例9-4 一个数组类模板一个数组类模板 华南理工大学计算机学院华南理工大学计算机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省宣城市郎溪县2023-2024学年高一上学期期末考试历史题目及答案
- 幽默三国读后感550字(9篇)
- 售后服务流程标准化服务脚本
- 城市绿化养护项目管理合同
- 营销方案撰写指南
- 可爱的小仓鼠爱的作文(15篇)
- 时间变化的声音课件
- 通稿2003读后感9篇范文
- 诗歌修辞手法与意境构建:八年级古诗鉴赏教案
- 记一件令我感动的事感动作文(10篇)
- 《颅脑与腹部损伤》课件
- 2025年企业劳动者雇佣合同样本
- 安徽省高一英语必修一单词表
- 企业级实验设备的投资回报分析方法
- DB37T 5133-2019 预制双面叠合混凝土剪力墙结构技术规程
- 老年上消化道出血急诊诊疗专家共识(2024版)解读
- 顺产产后护理查房
- 《糖尿病饮食教育》课件
- 承包村里集体建设用地协议范文
- 胸腰椎骨折的康复治疗
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
评论
0/150
提交评论