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

函数模板

时间:2020-06-17 01:46:18      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:出现   文件中   就会   color   版本   内联   函数模板   main   class   

一、函数模板

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 不会出现重定义

一、函数模板

 

函数模板

标签:出现   文件中   就会   color   版本   内联   函数模板   main   class   

原文地址:https://www.cnblogs.com/zhiminzeng/p/13149968.html

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