码迷,mamicode.com
首页 > 其他好文 > 详细

模板专题(一)函数模板

时间:2019-12-06 23:20:02      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:调试   直接   实现   泛化   std   主题   问题   进入   有一个   

本系列属于长篇,有兴趣的可以慢慢参看(源于读书笔记和各种资料整理)

解决模板,主要为了C++11中的某些问题做个铺垫

在学习模板之前,首先想到自己的一个问题,有时候需要打印某些调试信息,除了使用一些专业的LOG工具外,一般情况下为了简单方便,就直接使用std::cout,比如

std::cout<<"参数i="<<i<<std::endl;

std::cout<<"消息值="<<msg<<std::endl;

每次写这么一行感觉特别多也烦琐,就想着有没有一个函数,能接受任意参数进行打印呢?当时的想法是这样的,

void g(参数...)

{

  std::cout<<参数<<std::endl;

}

调用的时候,直接使用g(实参)来调用,这样就可以省了很多语句。但是由于每种类型都不同,如果要实现这种功能,需要函数重载很多次,那么有没有一种万能类型,用一个函数对应所有可能呢?
模板的意义就出现了,模板可以实现一对多。下面正式进入主题。

函数模板

首先说模板,就像工厂的模具一样,我们认为它是【虚】的,虚的概念在程序设计中也许是高境界,虚可以对应一切。例如,void *,我记得从前有篇博客是这样写的,void *就好比人,而int *,char *等实际类型可以认为是男人和女人,
那么可以说,男人和女人是人,但是人不是男人和女人,因此,int*可以直接转化为void*,翻译过来就是男人是人。这段表达让我一直以来记忆犹新,写的非常棒。

那么回到模板,模板也是一种的概念,对于函数模板来说,它代表一个函数家族。也就是说,一种类型可以泛化出各种类型。这是函数模板的初步认识,它是虚的。


 

模板专题(一)函数模板

标签:调试   直接   实现   泛化   std   主题   问题   进入   有一个   

原文地址:https://www.cnblogs.com/tinaluo/p/12000098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!