应用场景:
当某个函数的一个参数的类型不固定时(或者想多类型通用),可以使用模版.这样的话就不需要复制函数去重新定义参数类型了。
使用方法:
声明模版 A为通用类型,这个A可以自己取名,跟变量名一样可以自定义.
template <class A>
void demo(A arr,int arg) //声明了通用类型的arr 与int类型的arg
{
}
模板就是代码的复制,和继承的本质差不多
如果有两个不同类型的参数需要替换 则:
template <class A,class B>
voide demo(A addr,int len,B number)
{
}
在结构体/类中使用
template <class T,class C>
struct base //定义三个类型不固定的成员
{
T a;
C b;
T c;
C function()
{
}
}
模板会在编译的时候,编译器根据传进来的类型,生成对应的汇编代码。所以在反汇编里看不到模板的影子。通用类型生成的反汇编代码和对应类型的反汇编代码一样。