0
点赞
收藏
分享

微信扫一扫

C++学习指南06——函数模板

就是耍帅 2022-04-06 阅读 49

目录

引例:

使用函数重载实现:(略显繁琐)

函数模板:替代多次重载函数的多次定义

定义函数模板:


引例:

使用函数重载实现:(略显繁琐)

#include<iostream>
using namespace std;

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 main()
{
	int i1,i2,i3,i;
	cin>>i1>>i2>>i3>>i;
	i=max(i1,i2,i3);
	cout<<"i_max="<<i<<endl;
	double d1,d2,d3,d;
	cin>>d1>>d2>>d3>>d;
	d=max(d1,d2,d3);
	cout<<"d_max="<<d<<endl;
	long l1,l2,l3,l;
	cin>>l1>>l2>>l3>>l;
	l=max(l1,l2,l3);
	cout<<"l_max="<<l<<endl;
}

int max(int a,int b,int c){
	if(b>a)
		b=a;
	if(c>a)
		c=a;
	return a;
}
double max(double a,double b,double c){
	if(b>a)
		b=a;
	if(c>a)
		c=a;
	return a;
}
long max(long a,long b,long c){
	if(b>a)
		b=a;
	if(c>a)
		c=a;
	return a;
}

函数模板:替代多次重载函数的多次定义

  • 所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型可以不具体指定,而是用一个虚拟的类型来代表
  • 凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可
  • 在调用函数是系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能
#include<iostream>
using namespace std;

template<typename 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;
	i=max(i1,i2,i3);
	cout<<"i_max="<<i<<endl;
	double d1,d2,d3,d;
	cin>>d1>>d2>>d3>>d;
	d=max(d1,d2,d3);
	cout<<"d_max="<<d<<endl;
	long l1,l2,l3,l;
	cin>>l1>>l2>>l3>>l;
	l=max(l1,l2,l3);
	cout<<"l_max="<<l<<endl;
}

定义函数模板:

  • 先进行模板的声明再定义函数
Template<typename T>
Template<class T>
  • 虚拟类型名即可被用于函数的定义
  • 在对程序进行编译时,编译系统会将函数名与模板相匹配,将实参的类型取代了函数模板中的虚拟类型T
  • 类型参数可以不止一个,可以根据需要确定个数
举报

相关推荐

C++函数模板

C++学习指南08——成员函数

C++ 学习指南

C++ 函数模板基础

c++笔记 函数模板

0 条评论