本篇文章是学习C++ STL库的第一篇笔记,主要记录了使用template关键字创建模板函数的方法。
下面用一个非常简单的例子解释模板函数的用法 :
#include <iostream>
using namespace std;template <class T>
void myswap(T& a, T& b)
{T temp = a;a = b;b = temp;
}int main()
{int a = 10;int b = 20;cout << "a: " << a << " b: " << b << endl;myswap(a,b);cout << "a: " << a << " b: " << b << endl;double c = 11.5;double d = 3.14;cout << "c: " << c << " d: " << d << endl;myswap<double>(c,d);cout << "c: " << c << " d: " << d << endl;return 0;
}
输出结果如下:
使用模板函数最大的优点,在于我们可以对一类函数进行统一定义,这类函数一般内部的逻辑相同,唯一的区别在于使用的参数,变量类型不同。使用模板函数对这一类函数进行统一定义,在调用和维护时都会更为方便。在上述例子中,我们实现了一个调换两个变量值的函数,这个函数可以调换任意两个同类型变量的值。
在使用模板函数时,首先我们使用关键字template定义一个变量类型的类,例如这里的T。我们可以同时定义几个变量类型的类:
template <class T1, class T2...>
在调用模板函数时有两种方式,第一种和普通函数一样调用,例如上述例子中的:
myswap(a,b);
或者也可以定义好具体的类型:
myswap<double>(c,d);
1.需要注意的是,template定义的类模板,只对下一个函数有效。也就是说每次使用模板函数需要重新使用template关键字,一个模板函数对应一个template关键字。
2.模板函数仍然可以像普通函数一样被重载。
3.当模板函数和普通函数都满足调用的条件,程序会优先调用普通函数。
4.模板函数在调用的时候,其参数的类型必须严格对应,否则无法调用。
本篇文章主要参考了youtube视频,链接如下:
https://www.youtube.com/watch?v=xEz4jdKEfSI&list=PLzKtnppOmiXD-pyI4bjNzn9Km2ugRkdUK&index=1