函数模板
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 不会出现重定义
一、函数模板
以上是关于函数模板的主要内容,如果未能解决你的问题,请参考以下文章