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

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

发布了11 篇原创文章 · 获赞 8 · 访问量 361
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览