1412使用模板函数 调用模板函数与调用一般函数的方法无二致 例:使用Max()和Min()模板函数 include <iostream.h> include maxmin. h void maino 程序的输出为: nti=3,j=5; float f1=12.34,f2=23.45; 12.34 b cout < Max(i,j<< endl; cout < Min(f1, f2)<< endl; cout < Max(a,b")
14.1.2 使用模板函数 调用模板函数与调用一般函数的方法无二致。 例:使用 Max()和 Min()模板函数 #include <iostream.h> #include "maxmin.h" void main() { int i = 3, j = 5; float f1 = 12.34, f2 = 23.45; cout << Max(i, j) << endl; cout << Min(f1, f2) << endl; cout << Max('a', 'b') } 程序的输出为: 5 12.34 b
14.2类模板 14.2.1定义模板类 利用类模板定义的类叫做模板类。定义模板类具有如下的一般 形式: template<class T> classClass Name I ∥ Members }
14.2 类模板 14.2.1 定义模板类 利用类模板定义的类叫做模板类。定义模板类具有如下的一般 形式: template<class T> class Class_Name { // Members; };
例:定义模板类 ∥ ANYTYPE.H template<class T> class Any Type I private T X, y3 public Any Type(T a, T b): x(a), y(b) 1 void SetX(T a)I X=a; 1 void SetY(T b) y=b GetXo return x T GetO return y;1 ∥/ End of anyTyPe.h
例:定义模板类 // ANYTYPE.H template<class T> class AnyType { private: T x, y; public: AnyType(T a, T b) : x(a), y(b) {} void SetX(T a) { x = a; } void SetY(T b) { y = b; } T GetX() { return x; } T GetY() { return y; } }; // End of ANYTYPE.H
上例中,模板类 Any Type中所有成员函数均在类中定义成内 联函数。实际上,与一般类相同,模板类中的任一成员函数均 可以在类外定义。在类外定义成员函数的一般形式与定义模板 函数基本相同: template<class T type Class_ Name<T>:: Func_ Name(ages) ∥ Function Bod 请注意这里类名的写法:模板类与普通类的不同之处在于模板 类的类名一定具有C| ass Name<T>的形式
上例中,模板类 AnyType 中所有成员函数均在类中定义成内 联函数。实际上,与一般类相同,模板类中的任一成员函数均 可以在类外定义。在类外定义成员函数的一般形式与定义模板 函数基本相同: template<class T> type Class_Name<T> :: Func_Name(ages) { // Function_Body; } 请注意这里类名的写法:模板类与普通类的不同之处在于模板 类的类名一定具有 Class_Name<T> 的形式
例:定义一个栈模板类 ∥/ ANYSTACK.H #if I defined ANYSTACK H define ANYSTACK H template<class T, int n=10> class Any Stack I private T StackIn int TopMost int Top public Any Stack(: TopMost(n), Top(o) int Push(D) int Pop(T&)
例:定义一个栈模板类 // ANYSTACK.H #if !defined _ANYSTACK_H_ #define _ANYSTACK_H_ template<class T, int n = 10> class AnyStack { private: T Stack[n]; int TopMost; int Top; public: AnyStack() : TopMost(n), Top(0) {} int Push(T); int Pop(T&); }