以下代码示例中显示了类模板 Array 及其实例以及函数模板 square 及其实例。
1 template<class C> void square(C num, C *result)
2 {
3 *result = num * num;
4 }
5
6 template<class T> class Array
7 {
8 public:
9 int getlength(void)
10 {
11 return length;
12 }
13
14 T & operator[](int i)
15 {
16 return array[i];
17 }
18
19 Array(int l)
20 {
21 length = l;
22 array = new T[length];
23 }
24
25 ~Array(void)
26 {
27 delete [] array;
28 }
29
30 private:
31 int length;
32 T *array;
33 };
34
35 int main(void)
36 {
37 int i, j = 3;
38 square(j, &i);
39
40 double d, e = 4.1;
41 square(e, &d);
42
43 Array<int> iarray(5);
44 for (i = 0; i < iarray.getlength(); ++i)
45 {
46 iarray[i] = i;
47 }
48
49 Array<double> darray(5);
50 for (i = 0; i < darray.getlength(); ++i)
51 {
52 darray[i] = i * 2.1;
53 }
54
55 return 0;
56 }
|
该示例中:
Array 是一个类模板
square 是一个函数模板
Array<int> 是类模板实例(模板类)
Array<int>::getlength 是模板类的成员函数
square(int, int*) 和 square(double, double*) 是函数模板实例(模板函数)