本系列属于长篇,有兴趣的可以慢慢参看(源于读书笔记和各种资料整理)
解决模板,主要为了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*,翻译过来就是男人是人。这段表达让我一直以来记忆犹新,写的非常棒。
那么回到模板,模板也是一种虚的概念,对于函数模板来说,它代表一个函数家族。也就是说,一种类型可以泛化出各种类型。这是函数模板的初步认识,它是虚的。
模板专题(一)函数模板
原文地址:https://www.cnblogs.com/tinaluo/p/12000098.html
时间: 2024-11-11 06:43:47