C++函数模板
admin
2024-02-16 02:50:48
0

目录

1.开头

2.函数模板

  2.1例子

  2.1.1 int类型swap函数

  2.1.2 double类型swap函数 

  2.2 函数模板的概念

  2.3 函数模板的写法

   2.4 利用函数模板写swap函数

    2.4.1 函数模板swap代码

  2.5 不止一个参数的函数模板

3.总结


1.开头

  我们知道,C++可提升程序可重用性有两个方面的机制,第一个就是我们之前学过的类继承,第二个就是我们今天要讲的主题"函数模板"和"类模板",类模板在明天讲,今天首先先给大家讲解简单一些的"函数模板"!

2.函数模板

  2.1例子

   比如说我们来写一个函数,就swap吧,其作用就是交换两个变量的值,但是变量有int,float,double......很多类型的,肯定不能只写一个swap函数,要很多个,这就是涉及到了函数重载了,这些swap虽然名字一样,但是参数里面的类型不一样,就不会编译出错!

    2.1.1 int类型swap函数

void swap(int &a,int &b){int t;t=a;a=b;b=t;
}

    2.1.2 double类型swap函数 

void swap(double &a,double &b){double t;t=a;a=b;b=t;
}

  当然,还有很多类型的交换函数,这里就不重点讲了!

  ......

  2.2 函数模板的概念

   让我们想一想,用函数重载的方式写不同类型变量的swap有没有缺点呢?肯定是有的,什么缺点呢?第一:定义这些函数需要的代码太长了.第二:函数重载不太好理解.第三:又耗时.

   那我们有没有一种两全其美的方法呢?那肯定是没有的,但是有着一种可以缩短很多代码的方法,那就是"函数模板".    

  函数模板是什么呢?众所周知,有了“模子”后,用“模子”来批量制造陶瓷、塑料、金属制品等就变得容易了。程序设计语言中的模板就是用来批量生成功能和形式都几乎相同的代码的。有了模板,编译器就能在需要的时候,根据模板自动生成程序的代码。从同一个模板自动生成的代码,形式几乎是一样的。

  2.3 函数模板的写法

用函数模板解决:
template 
返回值类型 模板名 (形参表)
{函数体
};

  以后大家都可以根据这个写法来完成函数模板, 

   2.4 利用函数模板写swap函数

      用上述写法来套一下,我们因为只需要一个类型(毕竟swap函数里面的a,b,t都是一个类型的),所以在template中只需要写class T就可以了,T是什么呢?这个就代表我们函数的类型,可以是int,可以是double,都可以代表任何类型.

      返回值类型一直都是void,然后模板名肯定就是swap了,形参表里面不能写int a,int b,也不能写float a,float b.因为这样写就不是一个模板了,必须要写咋template里定义的那个类型,我们定义的就是T.所以要写T a,T b.

     函数体里面写一个交换的内容,但是这个t的类型是什么好呢?int类型不行,因为这个参数可能是一个float类型的,double也不行,也就只能写函数模板的参数T了.

    2.4.1 函数模板swap代码

#include
using namespace std;
template 
void Swap(T & x,T & y) 
{T tmp = x;x = y;y = tmp;
}
int main()
{int n = 1,m = 2;Swap(n,m); //编译器自动生成 void Swap(int & ,int & )函数double f = 1.2,g = 2.3;Swap(f,g); //编译器自动生成 void Swap(double & ,double & )函数return 0;
}

   这样的话,在int main();里面调用swap函数,里面的两个参数无论是什么都可以运行了!

  2.5 不止一个参数的函数模板

    函数模板中可以有不止一个类型参数,我们来看这一串代码。

#include
using namespace std;
template 
T2 print(T1 arg1, T2 arg2)
{ cout<< arg1 << " "<< arg2<

   这个两个参数的函数模板,可以应用更加的广泛!甚至可以写更多个,大大缩小了我们原本应该的代码长度.

3.总结

  今天我们讲的是C++里面普通的函数模板,明天我将会讲解更加复杂的函数模板,比如说函数模板的重载,函数调用次序等.

  谢谢大家的观看!

相关内容

热门资讯

斗金订购APP贵金属期货投资被...   斗金订购APP的投资者被广告宣传给诱导,注册就送什么现金,然后充值返现金卷等等这些宣传方式,都是...
哈易购APP非法期货交易欺骗投...   哈易购APP宣传可做白银铂金贵金属订购交易,但实际上并没有取得相关交易资质!哈易购APP本质上就...
消息称百度旗下昆仑芯瞄准500... 6 月 29 日消息,据《The Information》昨日援引知情人士消息,百度旗下 AI 芯片...
打造夏日消费新场景 第35届北... 北京商报讯(记者 翟枫瑞)6月29日消息,第35届北京国际燕京啤酒文化节新闻发布会在京举行。本届啤酒...
社保基金持仓数据出炉,一季度增... 最近各大上市公司一季度财报都公开了,咱们国家社保基金的持仓数据也全部曝光。目前社保拿着比亚迪价值44...
36氪首发 | 海思、中兴团队... 作者 | 乔钰杰 编辑 | 袁斯来 硬氪获悉,广州宸思通讯科技有限公司(以下简称“宸思科技”)近日完...
两天蒸发47亿市值!一纸税务通... 一纸税务通知书,能让一家百亿龙头两天蒸发47亿市值。 6月22日,北大荒(600598.SH)公告称...
SK海力士将投资1100万亿韩... SK集团会长崔泰源6月29日在韩国“三大重大计划”发布会上宣布,公司将投资1100万亿韩元扩大半导体...
两只A股,终止上市! 两家A股公司,即将摘牌。 6月29日,退市沪科(600608.SH)公告称,上海证券交易所将在202...
原创 M... 一家成立近十年的自动驾驶公司,在IPO时吸引了14家基石投资者认购近一半的发行股份,其中不乏奔驰、比...
基金忠言|国寿安保滤镜碎,三年... 图片来源:视觉中国 蓝鲸新闻6月29日讯(记者 祁和忠)保险系基金公司国寿安保总经理换人了。 6月2...
三星电机计划加码玻璃基板!相关... 6月29日,玻璃基板概念股午后有所回升, 华工科技(000988.SZ)逼近涨停, 彩虹股份(600...
拉萨海关持续壮大外贸经营主体 ...   新华网拉萨6月28日电(记者蒋梦辰)近日,记者从拉萨海关获悉,今年前5个月,西藏有进出口实绩的外...
机构:二季报临近,医药生物板块... 6月29日,华源证券发布了一篇医药生物行业的研究报告,报告指出,业绩期临近,产业链景气度有望再次迎来...
每日收评科创50放量涨超4.5... 财联社6月29日讯,三大指数全线收红,创业板指探底回升,科创50指数大涨4.61%。沪深两市成交额3...
6月多地土拍结构性升温:深圳单... 进入2026年6月,不少城市核心区地块集中诞生高溢价宗地,热度突出的城市包含深圳、杭州、长沙。 其中...
业绩炸裂!盛达资源半年预盈3.... 6月29日,贵金属矿山龙头盛达资源(000603.SZ)发布 2026 年半年度业绩预告,上半年业绩...
A股午后拉升三大股指收涨:半导... A股三大股指6月29日开盘涨跌互现。早盘沪强深弱,创指一度跌超2%。半导体午后拉升,带动两市上涨,沪...
原创 空... 前言 大家好,我是老金。 这几天,两幅极度割裂的画面放在一起,把我看笑了。 一边是在持续的热浪下,欧...