#include "iostream"
using namespace std;
class CGirl//超女类
{
public:
int m_bh;//编号。
string m_name;//姓名。d
int m_rank; //排名
};
template<typename T>
void Swap1(T &a,T &b)//交换两个变量的函数模版
{
T tmp=a;
a=b;
b=tmp;
cout<<"调用了Swap(T &a,T &b)\n";
}
template<>void Swap1<>(CGirl &g1,CGirl &g2)//交换两个超女对象的排名。
{
int tmp=g1.m_rank;
g1.m_rank=g2.m_rank;
g2.m_rank=tmp;
cout<<"调用了Swap(CGirl &g1,CGirl &g2)\n";
}
void Swap(int a,int b)//普通函数
{
cout<<"使用了普通函数。\n";
}
template<typename Q>//函数模版
void Swap(Q a,Q b)
{
cout <<"使用了模版函数。\n";
}
template <>
void Swap(int a,int b)//函数模板的具体化版本。
{
cout<<"使用了具体化的函数模板。\n";
}
int main()
{
int a=10,b=20;
Swap1(a,b);//使用了函数模版。
cout<<"a="<<a<<",b="<<b<<endl;
CGirl g1,g2;
g1.m_rank=1;g2.m_rank=2;
Swap1(g1,g2);//使用了超女的具体化函数
cout<<"g1.m_rank"<<g1.m_rank<<"g2.m_rank"<<g2.m_rank<<endl;
Swap('a','b');
}
输出:
调用了Swap(T &a,T &b)
a=20,b=10
调用了Swap(CGirl &g1,CGirl &g2)
g1.m_rank2g2.m_rank1
使用了模版函数。
发表回复