1.模板
/*
template: 定义模板的关键字
typename:定义模板类型的关键字
<>:模板的参数列表,模板类型可以在函数的参数,返回值,函数体代码等都可以使用
函数的模板类型,可以通过实参自动的去推导,前提在形参列表中使用了模板的类型
如果模板类型不能通过实参进行自动推导,需要显式的手动指定,在函数调用时从左向右指定模板参数列表类型
*/
#include <iostream>
using namespace std;
template<typename T>//设置一个类型t
T add(T a, T b) {
T c = a + b;
return c;
}
template <typename T,typename K ,typename M>
void show(T a, K b) {
M m = 20;//m是通过传进去的里数值进行类型判断
cout << typeid(a).name() << endl;
cout << typeid(b).name() << endl;
cout << typeid(m).name() << endl;
}
int main()
{
int a = 10;
int b = 20;
double b = 1.00;
float c = 3.14;
cout << add(a, b) << endl;
int a = 10, b = 20;
char c = 30, d = 40;
show<int, char, double>(a, c);
return 0;
}
/*
确定函数模板类型的三种方式,
实参自动推导,add(a