浅谈模板

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈模板相关的知识,希望对你有一定的参考价值。

什么是模板?
就是告诉编译器一个模子,让编译器根据不同的类型生成不同的代码。
编写与类型无关的函数,是代码复用的一种手段。
函数模板


template<typename T>
void Swap( T& left,  T& right)
{
    T temp = left;
    left = right;
    right = temp;
}

用这种方式定义函数模板就完成了代码的复用,模板函数工作的原理就是在编译阶段编译器对传入的实参进行推演出合适的函数

模板函数的实例化
分为显示实例化和隐式实例化

隐式实例化:让编译器根据实参推演模板参数的实际类型,当所传的参数类型编译器无法进行推演时(模板类型只有一个而实参类型有多个),有两种处理方式:1.类型转化 2.显示实例化

显式实例化:在函数名后的<>中指定模板参数的实际类型

注意:一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数
,当模板函数和同名自定义函数同时存在时优先调用自定义函数,可以通过显式调用来调用模板函数,
模板函数不允许自动类型转换,普通函数可以

同样的类模板与其相同原理

以上是关于浅谈模板的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

php模板原理PHP模板引擎smarty模板原理浅谈

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段