通用数据类型 template <typename T>

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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值