第一章 函数模板

1.1 什么是函数模板
函数模板代表一组函数,提供了适用于不同数据类型的行为。

1.1.1 函数模板定义

1
2
3
4
5
template<typename T>
T max(T a, T b)
{
return b < a ? a : b;
}

C++17 之前,类型 T 也必须可复制才能传递参数。 C++17 以后,即使复制构造函数和移
动构造函数都无效,也可以传递临时变量 (右值,参见附录 B)。

1.1.2 使用模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "max1.hpp"
#include <iostream>
#include <string>

int main()
{
int i = 42;
std::cout << "max(7,i):" << ::max(7, i) << '\n';

double f1 = 3.4;
double f2 = -6.7;
std::cout << "max(f1, f2):" << ::max(f1, f2) << '\n';

std::string s1 = "mathematics";
std::string s2 = "math";
std::cout << "max(s1, s2):" << ::max(s1, s2) << '\n';
}