只有你足够强,别人才会和你讲道理。
文章: 280
浏览: 3,093,324
  • 博主:笨木头
  • 关注:Unity、Net Core、Blazor
  • 邮箱:musicvs@163.com
笨木头  2015-01-04 20:56     其它     阅读(4401)     评论(6)
转载请注明,原文地址: http://www.benmutou.com/archives/1938
文章来源:笨木头与游戏开发
 

距离上一篇已经过去1个多月了,感觉断更太久不是好事,所以我在百忙之中抽时间更一下(小若:说得好像我们在等着你写教程似的~!)

因为最近事多,还没脱离繁忙时期,所以就.. 内容少一些好了~

 

 
笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址: http://www.benmutou.com/archives/1938

文章来源:笨木头与游戏开发
 

 

1.函数重载

什么是函数模板呢?一听就是我们开发者偷懒用的东西了。

假设,我们要写一个函数,它有一个参数,传入参数,然后输出这个参数的两倍值,如下代码:
[cce_cpp]
void getDouble(int num)
{
	std::cout << (num * 2);
}
[/cce_cpp]
比如调用getDouble(10); 就会输出20。

这很简单,但,如果我要输入float类型呢?很简单,再写一个函数就可以了:
[cce_cpp]
void getDouble(int num)
{
	std::cout << (num * 2);
}

void getDouble(float num) { std::cout << (num * 2); } [/cce_cpp]
这就是函数重载,大部分编程语言都有这概念,这里就不啰嗦了。

但是,如果我们要给很多类型的参数做重载,就要写很多个这样的函数,如果函数的内容稍微复杂一些,以后改起来也很麻烦(要一个个函数去修改)。

于是,函数模板可以解救我们。

 

2.函数模板

模板的意思就是,我们可以写一次函数,就可以适应不同的参数,相当于编译器帮我们进行了函数重载。

如下代码:
[cce_cpp]
template <typename T>
void getDouble(T num)
{
	std::cout << (num * 2);
}
[/cce_cpp]
template关键字用于定义模板,typename定义类型,T是类型名称,可以随意命名。

接下来实现函数内容就可以了~

当我们调用getDouble(10)的时候,编译器将创建参数为int num的getDouble函数。

当我们调用getDouble(10.25f)时,编译器将创建参数为float num的getDouble函数。

 

函数模板本身并不会创建这些函数,模板只是为了告诉编译器,当我们调用getDouble函数时,将自动为我们创建对应的getDouble函数。

最终效果和我们手动编写多个重载函数是一样的,唯一的不同就是——我们可以偷懒了。

 

3.结束

好了,关于模板函数的初步认识就介绍到这里,后面还有更多的内容,下次继续~

 

 

 

 
6 条评论
  • Simo 2015-01-05 14:08:01

    木头大大现在已经上班了么?
    0回复
    • 博主 糟糕_树叶的mut 2015-01-05 20:30:13

      不知道算不算呢...帮以前老师做项目,算又是帮人创业吧..自己的游戏也在做
      0回复
  • kunroc 2015-01-05 10:14:31

    终于更了~
    0回复
    • 博主 糟糕_树叶的mut 2015-01-05 12:58:09

      希望自己能坚持地久一些
      0回复
      • kunroc 2015-01-05 15:57:39

        能否将“希望”改为“必须”
        0回复
        • 博主 糟糕_树叶的mut 2015-01-05 20:30:21

发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发