模板
模板是支持参数化多态的工具,可以让类或者函数支持一种通用类型,再类中的属性、成员函数的参数、返回值在实际使用可以是任何数据类型
通过模板程序员就可以编写一些与类型无关的代码,模板为不同的数据类型制定了一套通用的算法
模板通常有两种形式
(1)函数模板:
函数模板针对参数类型不同的函数,参数参数类型不一样,但是功能与函数名称相同
代码示例:
#include <iostream>
using namespace std;
// 模板说明
template <class T> // typename等效于class
T add(T a,T b) // 可以传入任何类型
{
return a+b; // 如果传入的参数类型不支持此计算则会报错
}
int main()
{
cout << add(2,3) << endl; // 5
cout << add(2.3,3.3) << endl; // 5.6
string s1 = "AA";
string s2 = "BB";
cout << add(s1,s2) << endl; // AABB
return 0;
}
(2)类模板:
类模板可以把模板的范围扩展到一个类中
代码示例:
#include <iostream>
using namespace std;
// 模板说明
template <class T>
T add(T a,T b) // 可以传入任何类型
{
return a+b; // 如果传入的参数类型不支持此计算则会报错
}
int main()
{
cout << add(2,3) << endl; // 5
cout << add(2.3,3.3) << endl; // 5.6
string s1 = "AA";
string s2 = "BB";
cout << add(s1,s2) << endl; // AABB
return 0;
}