模板(template)

模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。
模板是一种对类型进行参数化的工具;
通常有两种形式:函数模板类模板
函数模板针对仅参数类型不同的函数
类模板针对仅数据成员成员函数类型不同的类。
使用模板的目的就是能够让程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些类型无法实现,要实现这些类型的交换就要重新编写另一个swap函数。使用模板的目的就是要让这程序的实现与类型无关,比如一个swap模板函数,即可以实现int 型,又可以实现double型的交换。模板可以应用于函数和类。下面分别介绍。
注意:模板的声明或定义只能在全局,命名空间或类范围内进行。即不能在局部范围,函数内进行,比如不能在main函数中声明或定义一个模板。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/************************************************************************
C++ Program to demonstrate Use of template
date: 2023-3-1
author: Alex Li
version:1.0
************************************************************************/
#include <iostream>
using namespace std;
 
// One function works for all data types.  This would work
// even for user defined types if operator '>' is overloaded
template <typename T> T Max(T x, T y){
    return (x > y) ? x : y;
}
 
int main(){
    // Call Max for int
    cout << Max<int>(3, 7) << endl;
    // call Max for double
    cout << Max<double>(3.0, 7.0) << endl;
    // call Max for char
    cout << Max<char>('g', 'e') << endl;
 
    return 0;
}

Scroll to Top