template中文意思是模板
template < typename T > 这个是通用数据类型固定格式,T是通用类型名字,此时T拥有所有数据类型,后面程序中出现T代表通用数据类型,在类型转换时双方的类型需要一样
通用数据类型必须和函数模板在一块,函数模板不能单独使用务必定义T才可以使用
如果你认为这里已经写了template<typename T>,以后的函数体可以直接用T这是错误的
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//写法1:自动类型推导法,类型需要一致
template<typename T>
//这个是通用数据类型固定格式,T是通用类型名字,此时T代表所有数据类型
//后面的代表出现T代表通用数据类型,在类型转换时双方的类型需要一样
void newSwap(T& a, T& b) //实参传过来的是int类型,这里的T就作为int来使用,其他类型同样适用
{
T temp = a;
a = b;
b = temp;
}
//写法2:显示指定类型法
//通用数据类型必须和函数模板在一块,函数模板不能单独使用务必定义T才可以使用
//如果你认为这里已经写了template<typename T>,以后的函数体可以直接用T这是错误的
template<typename T>
void newSwap2(T& a, T& b) //实参传过来的是int类型,这里的T就作为int来使用,其他类型同样适用
{
T temp = a;
a = b;
b = temp;
}
template<typename T>
void newSwap3() //空函数体需要使用显示指定类型法,告诉程序要准备某个类型的内存空间
{
}
int main(void)
{
//实参传过来的是int类型,这里的T就作为int来使用,其他类型同样适用
int a=11;
int b=22;
newSwap(a, b);//写法1:自动类型推导法
cout << a << endl;//打印结果
cout << b << endl;
double c = 11.11;
double x = 22.22;
//写法2:显示指定类型法,因为类型需要一样,所以把指定的类型写了在前面
newSwap2<double>(c, x);
//前面已经定义了double c和x,这里在次指定c和x为double看起来多此一举,但在后面会说显示指定类型法还有其他作用
cout << c << endl;//打印结果
cout << x << endl;
newSwap3<int>();
//空函数体使用显示指定类型法,告诉程序要准备某个类型的内存空间,使用自动类型推导法没有写<int>类型程序会报错
return EXIT_SUCCESS;
}