详解C++函数模板

函数模板属于类属,能够处理不同的数据类型,当编译器遇到函数调用是,将根据实际参数的类型产生特定的代码,函数模板的定义形式是:

template <类型参数表>
返回值类型 函数名(形式参数表){
//函数体
}

函数模板可以为我们提供很多方便

函数重载的例子:
int square(int number){return number*number;
}float square(float number){return number*number;
}

上述两个函数之间的区别是参数类型和返回值类型不一样,这种情况下我们使用函数模板更加方便。
通过函数模板实现square函数

template <class T>
T square(T number){return number*number;
}

只要写一个函数定义就可以处理不同的数据类型,而不需要对每种数据类型都写一个单独的函数。
eg1:

#include<iostream>
using namespace std;template <class T>
T square(T number){return number*number;
} int main(){int userInt;float userFloat;cout.precision(5);cout<<"请输入一个整数和一个浮点数:";cin>>userInt>>userFloat;cout<<"他们的平方分别是:";cout<<square(userInt)<<"和"<<square(userFloat)<<endl;return 0; 
}

注:①函数模板本身不占用内存,当编译器遇到函数调用是,将在内存中创建一个函数实例。②模板的定义必须放在函数调用之前,通常放在程序的开头或者位于头文件中。

具有多个参数的函数模板:

template <class T>
void swapData(T &var1,T &var2){T temp;temp=var1;var1=var2;var2=temp;
}

函数模板不是一个真正意义上的函数,它仅仅是一个函数模型,当编译器遇到函数调用是,将依据模板给出的代码,通过检验参数的数据类型,产生重载函数。

具有多种类型的函数模板

template <class T1,class T2>
void swapData(T1 &var1,T2 &var2){T1 temp;temp=var1;var1=var2;var2=temp;
}

函数模板也支持重载

template <class T>
T sum(T var1,T var2){return var1+var2;
}template <class T>
T sum(T var1,T var2,T var3){return var1+var2+var3;
}

当程序中有一个普通的函数(非模板),同时定义了一个模板,只要他们的参数列表不同,他们也能作为重载函数的形式共存。

float sum(float var1,float var2){return var1+var2;
}template <class T>
T sum(T var1,T var2,T var3){return var1+var2+var3;
}
这也属于模板重载,当程序执行是,将根据实际调用的参数进行区分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业女兵,陈豪2010《点解阿Sir》剧照

0陈豪2010《点解阿Sir》剧照2012-07-21 08:24{"info": {"setname": "陈豪2010《点解阿Sir》剧照","imgsum_bk": 20,"imgsum": 20,"lmodify": "2012-07-21 08:24:00","prevue": " "…

ASP.NET MVC学习之Ajax(完结)

一.前言 通过上面的一番学习&#xff0c;大家一定收获不少。但是总归会有一个结束的时候&#xff0c;但是这个结束也意味着新的开始。 如果你是从事ASP.NET开发&#xff0c;并且也使用了第三方控件&#xff0c;那么一定会觉得ASP.NET开发ajax十分的简单&#xff0c;而ASP.NET M…

认知计算机语言学,什么是认知语言学

文献综述&#xff1a;“语文素养”内涵研究综述“语文素养”内涵研究综述摘要&#xff1a;“语文素养”是新一轮语文课程改革所提出的一个重要概念&#xff0c;其作为语文课程改革的目标与核心理念&#xff0c;挤兑了“语文能力”的核心地位。目前&#xff0c;人们对“语文素养…

data URI scheme及其应用

data URI scheme通俗来讲就是图片直接塞到HTML而不是由HTTP。这样从表面上看会降低一次HTTP的请求&#xff0c;实现了对于网页的优化&#xff08;只是看了其它一些文章data URI由于将图片採用了base 64的编码方式进行表达&#xff0c;所以还是须要进行HTTP去下载内容&#xff0…

Linux 禁用触摸板

1&#xff0c;首先需要查看触摸板&#xff1a; 命令&#xff1a;xinput list 结果&#xff1a; ⎡ Virtual core pointer         id2 [master pointer (3)]    ⎜ ↳ Virtual core XTEST pointer      id4 […

大学新生学计算机推荐电脑,大学新生用什么电脑好呢?

科技的发展日新月异&#xff0c;数码的yi巴为你资讯。今天是7月的开头&#xff0c;我们正式迈入了2019下半年。7月开头也正是许多大多数高考生快忙完志愿填报&#xff0c;开始考虑大学该选择什么电脑的时候。今天yi巴就来跟大家聊聊该大学新生该怎么选择电脑&#xff0c;并给予…

NewCode----句子反转

题目描述 给定一个句子&#xff08;只包含字母和空格&#xff09;&#xff0c; 将句子中的单词位置反转&#xff0c;单词用空格分割, 单词之间只有一个空格&#xff0c;前后没有空格。 比如&#xff1a; &#xff08;1&#xff09; “hello xiao mi”-> “mi xiao hello” …

mac boot2docker certs not valid with 1.7

摘自&#xff1a;https://github.com/boot2docker/boot2docker/issues/824 An error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103 I come with the same p…

对象之间的交互

之前写过一篇随笔《剪刀剪纸》是给一些新同事讲面向对象时用的&#xff0c;当时就感觉有些不顺畅&#xff0c;不过用来给新同事入门足够了就没多想&#xff0c;最近看书时偶尔走神把这件事想起来了&#xff0c;顺便群里讨论时谈到聚合之间的方法调用&#xff0c;于是决定写一篇…

NewCode----数串

题目描述&#xff1a; 设有n个正整数&#xff0c;将他们连接成一排&#xff0c;组成一个最大的多位整数。 如:n3时&#xff0c;3个整数13,312,343,连成的最大整数为34331213。 如:n4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入描述: 有多组测试样例&#xff0c…

计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!

点击上方△蓝字可关注我们昵称E师姐性别女插本复习资料教材、小红书、CB398、启航等插本关注的公众号、网站等介绍微信公众号居多&#xff1a;专插本资料库、专插本直通车、广东省专插本、插本最前线等等……专科学校和专业广州城市职业学院 会计插本学校和专业广东财经大学华商…

Android,监控ContentProvider的数据改变

有时候应用中需要监听ContentProvider的改变并提供响应&#xff0c;这时候就要利用ContentObserver类了 不管是ContentProvider中实现的,insert,delete,update方法中的任何一个&#xff0c;程序都会调用getContext().getContentResolver().notifyChange(uri,null); 这行代码可用…

[leetcode]Sort List

题目要求&#xff1a;Sort a linked list in O(n log n) time using constant space complexity. 数据结构定义&#xff1a; 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : v…

北京市中 高英语听说计算机考,2021年北京高考首次英语听说机考时间确定,共五种题型...

从明年开始&#xff0c;北京市高考统考英语科目增加口语考试&#xff0c;连同之前的听力考试一起&#xff0c;实行一年两考。今天&#xff0c;北京教育考试院发布消息&#xff0c;2021年高考英语听说计算机考试首考将于2020年12月12日进行。12月7日起&#xff0c;考生可登陆北京…

NewCode----彩色宝石项链

题目描述: 有一条彩色宝石项链&#xff0c;是由很多种不同的宝石组成的&#xff0c;包括红宝石&#xff0c;蓝宝石&#xff0c;钻石&#xff0c;翡翠&#xff0c;珍珠等。有一天国王把项链赏赐给了一个学者&#xff0c;并跟他说&#xff0c;你可以带走这条项链&#xff0c;但是…

插件开发-UI插件开发

1.新建类库解决方案&#xff0c;引入命名空间,同时引入要添加UI Form的WebPart(在Portal\UILib目录下)2.继续UFSoft.UBF.UI.Custom.ExtendedPartBase&#xff0c;重写AfterInit()方法&#xff0c;代码如下&#xff0c;便于添加下拉列表按钮&#xff0c;在原单据中UI先新增一下拉…

为博客园选择一个小巧霸气的语法高亮插件

博客园的语法高亮简直蛋疼&#xff0c;于是乎就打算找一个靠谱的插件来改造下。各种百度谷歌&#xff0c;大致得到几个推荐&#xff1a;SyntaxHighlighter&#xff0c;Snippet&#xff0c;Google Code Pretiffy&#xff0c;Highlight&#xff0c;SHJS。其实 SyntaxHighlighter …

计算器软件设计和计算机软件设计区别,求一个模拟计算器程序

# include# include# include# include# define MAX_OPERATOR_NUM 100//运算符栈数组长度# define MAX_DATA_NUM 100//运算数栈数组长度typedef struct OPStack//定义运算符栈{char opStack[MAX_OPERATOR_NUM];int top;}OPStack, *pOPStack;typedef struct DATAStack//定义操作…

python中print语句

学习链接1 学习链接2 1. 如果print语句后面什么符号都没有是个换行语句&#xff0c;也就是是要另起一行。 2. 分号表示下次输出是紧挨着这个光标位置输出. 3. 而逗号是下次输出与这次输出有一定的空格之后接着输出. namekk salutationMr. greetingHello, print greeting,sa…

计算机应用基础论坛贴子怎么发,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...

摘要&#xff1a;进入21世纪以来,互联网就备受关注.由于我国信息设施资源建设稳步推进,互联网的基础更为坚实,发展更为迅速.据权威数据统计,中国至2009年约拥有130万个BBS论坛,数量为全球第一,然而,作为分享和参与类应用的典型代表(更新博客,发帖/回帖)的使用率仍然偏低.笔者在…