1.1 template < class / typename T> 告诉编译器紧跟的代码里出现T不要报错
1.2 mySwap( T &a T &b ) 类型也需要传入 ,类型参数化
1.3 myswap(a,b) 自动类型推导 按照a b的类型 来替换T
1.4 myswap< int>(a,b) 显示指定类型
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
//类型不同,逻辑又非常相似
//类型参数化 泛型编程 -- 模板技术
template<class T>// 告诉编译器 下面如果出现T不要报错,T是一个通用的类型
void mySwap(T &a, T &b) {
T temp = a;
a = b;
b = temp;
}
// template<typename T> 等价于 template<class T>
template<typename T>
void mySwap2() {}
void test01() {
int a = 17;
int b = 37;
char c1 = 'c';
//1 自动类型推导,必须有参数类型才可以推导
//mySwap(a, c1); 推导不出来T,所以不能运行
mySwap(a, b);
cout << "a=" << a << endl;
cout << "b=" << b << endl;
double c = 45;
double d = 69;
//2 显示指定类型
mySwap<double>(c, d);
cout << "c=" << c << endl;
cout << "d=" << d << endl;
//模板必须要指定出T才可以使用
mySwap2<double>();
}
int main(){
test01();
system("pause");
return 0;
}