问题1:为什么要使用函数模板?
因为例如在进行两个变量的值进行交换的时候,由于每次进行交换的变量的数据类型可能不同,所以我们就要写很多个函数,所以我们不妨将该数据类型抽象为一个模板,这样进行交换的时候就很容易实现了
#include<iostream>
using namespace std;
template<typename T>//template:申明要创建一个模板了
//typename:表示后面的符号是一种数据类型(可以用class替代)
//T通用的数据类型,可以用其他字母替代,但是一般为大写形式
//模板由类模板和函数模板之分
//函数模板的定义:申明模板后紧跟着的是一个函数,那就叫函数模板
//类模板的定义:申明模板后紧跟着的是一个类,那就叫做类模板
void Myswap(T& a, T& b)
{
T temp = a;
a = b;
b = temp;
}
void test01()
{
//模板的使用有两种方式
//1.自动类型推导:在传入参数的时候,a和b都是int类型的,所以推导出
//模板T的数据类型为int类型的
int a = 8;
int b = 9;
Myswap(a, b);
cout << a << endl;
cout << b << endl;
}
void test02()
{
//第二种方式:显示指定类型
double a = 9.9;
double b = 8.8;
Myswap<double>(a, b);//就是在进行函数调用的时候,就写出该模板中
//T的数据类型,就不用编译器进行自动类型推导了
cout << a << endl;
cout << b << endl;
}
int main(void)
{
test01();
test02();
system("pause");
}