首页 > 作文

C++函数模板介绍

更新时间:2023-04-04 03:31:15 阅读: 评论:0

文章转自:公众号:coder梁(id:coder_lt)

我们的学校 作文函数模板:

所谓函数的模板,本质上也就是使用泛型来定义函数。

所谓的泛型其实也就是不定的类型,比如说我们使用vector的时候,可以定义各种类型的vector,可以定义存储int型的vector也可以定义存储float类型的,也可以定义存储其他类型。我们在声明的时候将存储的类型当做参数传给了模板。

泛型可以用个人档案在哪具体的类型,比如(int或double)替换,通过将类型作为参数传给模板,编译器会根据传递的参数类型生成该类型的函数。这种方式也被称为通用编程或者参数化类型。

举一个很简单的例子,比如说我们要实现一个函数交换两个变量的值。对于int类型我们要实现一遍,对于double类型我们又要实现一遍,如果还需要其他类型,那么又需要额外实现很多同样逻辑的函数。当然可以拷贝代码,但显然这样会很浪费时间,而且会使得代码变得臃肿。

这个时候我们就可以使用函数模板自动完成这一功能,函数模板允许以任意类型来定义函数,所以我们就可以这样实现:

template <typename t>void swap(t &a, t &b) {    t temp = a;    a = b;    b = temp;}

当我们要创建一个模板的时候,需要首先声明模板的类型,也就是template语句做的事情。关键字typename也是必须的,也可以使用class代替。typename关键字是在c++98标准添加的,所以在更早的版本中往往使用class。在这个场景下,这两种方式是等价的。c++ primer当中更建议使用typename而非class。

typename之后跟的是类型的名称,我们可以使用任意的名字,一般来说习惯性地会使用字母t。我们在使用的时候和普通函数并没有什么不同,当做普通函数使用即可。

template <typename t>void swap(t &a, t &b) {    t temp = a;    a = b;    b = temp;}int i = 10, j = 20;swap(i, j);double a = 3.0, b = qqweb版4.0;swap(a, b);

虽然我们只实现了一次函数,但是在编译的时候,编译器会将这个函数根据我们使用的情况生成多拉萨的天空个版本。比如he is just kidding在上面的代码当中,我们使用了int和double两种类型的函数。编译器会替我们生成两份代码,也就是说最终代码上和我们手动实现函数重载是一样的,可以理解成一种方便我们程序编写的特性。

到此这篇关于c++函数模板介绍的文章就介绍到这了,更多相关c++函数模板内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 03:31:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cb33771f39e1008d223ab33370d63f16.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++函数模板介绍.doc

本文 PDF 下载地址:C++函数模板介绍.pdf

标签:函数   类型   模板   定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图