- A+
所属分类:其他教程
文章目录[隐藏]
- 函数模板
预处理器指令是在编译前处理源代码的程序。在C/C++中编写程序和执行程序之间有许多步骤。
下面的程序说明了函数模板的功能:
#include <bits/stdc++.h> #define min(a, b) ((a < b) ? a : b) using namespace std; // Driver code int main() { int a = 2, b = 4; cout << "Minimum of both is: " << min(a, b); return 0; }
运行结果:
Minimum of both is: 2
函数模板
函数模板是可以处理不同数据类型的通用函数,不需要任何单独的代码。下面的程序说明了函数模板的功能:
#include <iostream> #include <stdio.h> using namespace std; // Function Template template <class T> T Min(T x, T y) { return (x < y) ? x : y; } // Driver Code int main() { int a = 4, b = 8; cout << "Minimum of both is: " << min(a, b); return 0; }
函数模板用于制作通用函数,可以与任何数据类型一起工作。例如,用于计算任何类型的2个值的最小值的函数模板可以定义为:
template <class T> T minimum(T a, T b) { return (a < b) ? a : b; }
但是,这个任务也可以使用使用预处理指令#define
创建的预先处理指令来执行。所以,两个数的最小值可以定义为:
#define minimum(a, b) ((a < b) ? a : b)
预先处理指令也可以通过使用以下语句来实现:
minimum(30, 35); minimum(30.5, 40.5);
以下是两者之间的表格差异:
序号 | 预处理器指令 | 函数模板 |
---|---|---|
1 | 没有类型检查 | 有完整的类型检查 |
2 | 它们被预处理 | 它们被编译 |
3 | 它们可以处理任何数据类型 | 它们与#define 预处理器指令一起使用 |
4 | 它们可能会导致意外结果 | 不会获得这种意外结果。 |
5 | 不确保实例中的类型安全 | 确实确保类型安全 |
6 | 有明确的完全专业化 | 没有明确的完全专业化 |
- 我的微信公众号
- 扫一扫关注
- 我的新浪微博号
- 扫一扫关注