您的位置:首页 > 编程语言 > C语言/C++

C++ STL学习笔记 : 1. template 模板函数

2020-06-07 05:21 302 查看

本篇文章是学习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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: