函数模板的机制
编译器并不是把函数模板处理成能够处理任意类的函数
编译器从函数模板通过具体类型产生不同的函数
编译器会对函数模板进行两次编译
在声明的地方对模板代码本身进行编译;在调用的地方对参数替换后的代码进行编译
第一次编译:是对函数的语法,句法,词法进行编译;
第二次编译是对参数替换后的代码进行编译
#include<iostream>
using namespace std;
template < typename T>
void my_swap(T &a, T &b)//模板函数
{
T c;
c = a;
a = b;
b = c;
cout << "hello world....." << endl;
}
int main()
{
//当函数参数的类型为 int
int a = 0;
int b = 1;
my_swap(a, b);
//当函数参数的类型为char
char c = 'a';
char d = 'b';
my_swap(c, d);
system("pause");
return 0;
}
本文深入探讨了函数模板的工作原理,包括编译器如何通过具体类型从模板生成特定函数,以及函数模板的两次编译过程。文章还提供了一个具体的示例,展示了如何使用模板函数实现不同类型数据的交换操作。
1231

被折叠的 条评论
为什么被折叠?



