C++学习之函数的重载和函数模板(谭浩强4.8-4.9)

4.8函数的重载不仅允许函数的参数类型不同,还允许函数参数的个数不同(但是参数个数和类型同时相同时不能使用重载)

#include<iostream> 
using namespace std;
int main()
{
	int max(int a, int b, int c);
	double max(double a, double b, double c);
	long max(long a, long b, long c);
	int i1, i2, i3, i;
	cin >> i1 >> i2 >> i3;
	i = max(i1, i2, i3);
	cout << "i_max=" << i << endl;
	double d1, d2, d3,d;
	cin >> d1 >> d2 >> d3;
	d = max(d1, d2, d3);
	cout << "d_max=" << d << endl;
	long g1, g2, g3, g;
	cin >> g1 >> g2 >> g3;
	g = max(g1, g2, g3);
	cout << "g_max=" << g << endl;
}
int max(int a, int b, int c)
{
	if (b > a)a = b;
	if (c > a)a = c;
	return a;
}
double max(double a, double b, double c)
{
	if (b > a)a = b;
	if (c > a)a = c;
	return a;
}
long max(long a, long b, long c)
{
	if (b > a)a = b;
	if (c > a)a = c;
	return a;
}

当函数体相同、参数个数相同而类型不同的情况可以使用函数模板,(参数个数不同时候不能用函数模板)
注意:函数模板必须在主函数的前面!

#include<iostream> 
using namespace std;
template<typename T>  //模板声明,T为类型参数
T max(T a, T b, T c)
{
	if (b > a)a = b;
	if (c > a)a = c;
	return a;
}
int main()
{
	int i1, i2, i3, i;
	cin >> i1 >> i2 >> i3;
	i = max(i1, i2, i3);
	cout << "i_max=" << i << endl;
	double d1, d2, d3,d;
	cin >> d1 >> d2 >> d3;
	d = max(d1, d2, d3);
	cout << "d_max=" << d << endl;
	long g1, g2, g3, g;
	cin >> g1 >> g2 >> g3;
	g = max(g1, g2, g3);
	cout << "g_max=" << g << endl;
	return 0;
}

两个例子执行效果相同:
在这里插入图片描述
当函数参数个数不同时使用重载函数的例子如下:

#include<iostream> 
using namespace std;
int main()
{
	int max(int a, int b, int c);
	int max(int a, int b);
	int a = 8, b = -12, c = 27;
	cout << "max(a,b,c)=" << max(a, b, c) << endl;
	cout << "max(a,b)=" << max(a, b) << endl;
	return 0;
}
int max(int a, int b, int c)
{
	if (b > a)a = b;
	if (c > a)a = c;
	return a;
}
int max(int a, int b)
{
	if (a > b)return a;
	else return b;
}

执行效果如图:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值