函数模板

Posted zhiminzeng

tags:

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

一、函数模板

template<typename T>   // typename/class 都可以,这两关键字,表示 T 是一种类型
// 如果有过个类型,则用 template<typename T1, typename T2>
inline  // 如果模板函数是内联函数,则inline的位置如下
T Sum(T& t1, T& t2)
{
    return t1 + t2;
}

template<int a, int b>  // 非类型模板参数
int Sum2()
{
    return a + b;
}

int main()
{
    int a = 1;
    int b = 2;
    int c1 = Sum(a, b);       // 模板参数的类型,有时候是根据你提供的数据类型推断出来的
    int c2 = Sum<int>(a, b);  // 也可显式指定模板的参数类型

    int d1 = Sum2<1, 2>();   // 非类型模板参数传值
    // 也就是说,模板<>中的值都是通过调用的时候<>中的值来赋值的
    int d2 = Sum2<a, 2>();   // 不可以,非类型模板参数,必须在编译的时候就给定值,
    // 所以里面传递的参数必须是常量,因为常量在定义的时候就会初始化好

    // 小结:模板<>中的值必须是在编译的时候就知道的,比如类型 T 要是明确地类型,int a要是确切的值
    system("pause");
    return 0;
}

// 函数模板小结:
// 模板定义不会导致编译器生成代码,只有在我们调用这个函数的时候
// 使编译器会为我们实例化一个特定版本的函数之后,编译器才会生成代码 // 函数模板的定义直接放在 .h 文件中,多个cpp include 不会出现重定义

一、函数模板

 

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

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

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

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

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

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

nodejs常用代码片段