具体化和实例化都是对函数模板来说的,都必须首先声明函数模板,否则会报错
#include <iostream>
#include <string>
using namespace std;
template <typename T>
void MySwap(T& a, T& b);
struct NODE
{
int ID;
int nAge;
};
template <> void MySwap<NODE>(NODE& node1, NODE& node2)
{
cout << "这是一个模板" << endl;
int Temp;
Temp = node2.ID;
node2.ID = node1.ID;
node1.ID = Temp;
}
template <typename T>
void MySwap(T& a, T& b)
{
cout << "这是一个具体化" << endl;
T Temp = a;
a = b;
b = Temp;
};
template void MySwap<int>(int& a, int& b);
int main(int argc, char* argv[])
{
int nNum1 = 10;
int nNum2 = 20;
double dNum1 = 3.14;
double dNum2 = 0.618;
NODE node1 = { 2021,100 };
NODE node2 = { 2022,200 };
MySwap(nNum1, nNum2);
MySwap(node1, node2);
MySwap(dNum1, dNum2);
return 0;
}