从C到C++(模板函数)

15.模板template函数:
例:求两个变量的最小值
厌倦了对每种类型求最小值

#include <iostream> 
using namespace std;

int minValue(int a, int b)        //对于不同的类型变量的比较,需要定义新的不同类型的函数,但里面的代码是一样的 
{//return a<b?a:b	

	if (a < b) return a;
	else return b;
}
double minValue(double a, double b) 
{//return a<b?a:b	
	if (a < b) return a;
	else return b;
}

int main()           //使用了函数重载 
{
	int i = 3, j = 4;          
	cout << "min of " << i << " and " << j << " is " << minValue(i, j) << endl;
	double x = 3.5, y = 10;
	cout << "min of " << x << " and " << y << " is " << minValue(x, y) << endl;

}

//在C++中可以转化成: 模板函数

#include <iostream> 
using namespace std;

//可以对任何能比较大小(<)的类型使用该模板让编译器
//编译器会自动生成一个针对该数据类型的具体函数


template<class TT>        //template 是模板头,class是定义类型的关键字,是一个类,TT是指泛指的类型名 
TT minValue(TT a, TT b)   
{//return a<b?a:b	
	if (a < b) return a;
	else return b;
}

int main() 
{
	int i = 3, j = 4;
	cout << "min of " << i << " and " << j << " is " << minValue(i, j) << endl; //编译器会自动生成一个针对该数据类型的具体函数
	double x = 3.5, y = 10;
	cout << "min of " << x << " and " << y << " is " << minValue(x, y) << endl;

	//但是,不同类型的怎么办?
	
	//cout << "min of " << i << " and " << y << " is " << minValue(i, y) << endl;  //i是int型,y是double型 
} 

//可以对任何能比较大小(<)的类型使用该模板让编译器
//自动生成一个针对该数据类型的具体函数

#include <iostream> 
using namespace std;

template<class T1, class T2>            //定义两个不同的类型 
T1 minValue(T1 a, T2 b) 
{//return a<b?a:b	
	if (a < b) return a;
	else return (T1)b; //强制转化为T1类型      //在这所有情况下都返回T1类型 
}

int main() 
{
	int i = 3, j = 4;
	cout << "min of " << i << " and " << j << " is " << minValue(i, j) << endl;
	double x = 3.5, y = 10;
	cout << "min of " << x << " and " << y << " is " << minValue(x, y) << endl;

	//但是,不同类型的怎么办?
	cout << "min of " << i << " and " << y << " is " << minValue(i, y) << endl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值