012类型模板全特化_全特化类模板_全特化类成员函数
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
template<typename T,typename U>
class TC
{
public:
void FunctionTest01()
{
cout << "泛化版本" << endl;
}
TC()
{
cout << "泛化版本构造函数" << endl;
}
};
template<>
class TC<int,int>
{
public:
void FunctionTest01()
{
cout << "int int 特化版本版本" << endl;
}
};
template<>
class TC<double,int>
{
public:
void FunctionTest01()
{
cout << "double int 特化版本版本" << endl;
}
};
template<>
void TC<double,double>::FunctionTest01()
{
cout << "double doubel FunctionTest01特化版本版本" << endl;
}
int main(void)
{
TC<char, int>tchar;
tchar.FunctionTest01();
TC<int, int>tint;
tint.FunctionTest01();
TC<double, int>tdouble;
tdouble.FunctionTest01();
TC<double, double>tdooo;
tdooo.FunctionTest01();
system("pause");
return 0;
}
013类型模板偏特化_局部特化_模板参数数量上
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
template<typename T, typename U,typename W>
class TC
{
public:
void FunctionTest01()
{
cout << "泛化版本" << endl;
}
TC()
{
cout << "泛化版本构造函数" << endl;
}
};
template< typename U>
class TC<int,U,int>
{
public:
void FunctionTest01()
{
cout << "数量--偏特化版本化版本" << endl;
}
};
int main(void)
{
TC<double, double, double> tcddd;
tcddd.FunctionTest01();
TC<int, double, int >tcidi;
tcidi.FunctionTest01();
system("pause");
return 0;
}
014局部特化_范围上
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
template<typename T>
class TC
{
public:
void FunctionTest()
{
cout << "调用泛化版本函数" << endl;
}
};
template<typename T>
class TC<const T>
{
public:
void FunctionTest()
{
cout << "Const T特化版本" << endl;
}
};
template<typename T>
class TC<const T*>
{
public:
void FunctionTest()
{
cout << "T*特化版本" << endl;
}
};
template<typename T>
class TC<const T&>
{
public:
void FunctionTest()
{
cout << "T&特化版本" << endl;
}
};
template<typename T>
class TC<const T&&>
{
public:
void FunctionTest()
{
cout << "T&&特化版本" << endl;
}
};
int main(void)
{
TC<double>td;
td.FunctionTest();
TC<double*>tdp;
tdp.FunctionTest();
TC<const double> tcc;
tcc.FunctionTest();
TC<int&>ti;
ti.FunctionTest();
TC<int&&>tii;
tii.FunctionTest();
system("pause");
return 0;
}
015函数模板全特化
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
template<typename T,typename U>
void TestFunction(T &t,U&u)
{
cout << "--这是函数泛化版本--" << endl;
}
template<>
void TestFunction(int &t, double&u)
{
cout << "--这是int double类型的特化版本--" << endl;
}
void TestFunction(int &t, double&u)
{
cout << "这是testFunction的重载函数" << endl;
}
int main(void)
{
const char*p = "jisuanjiz";
int i = 1200;
TestFunction(p, i);
double d = 23.344;
TestFunction(i, d);
system("pause");
return 0;
}
016函数模板不能偏特化
#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
template<typename T, typename U>
void TestFunction(T &t, U&u)
{
cout << "--这是函数泛化版本--" << endl;
}
template<typename T>
void TestFunction(T&t, double&u)
{
cout << "--这是局部偏特化的特化版本--" << endl;
}
int main(void)
{
const char*p = "jisuanjiz";
int i = 1200;
TestFunction(p, i);
double d = 23.344;
TestFunction(i, d);
TestFunction(p, d);
system("pause");
return 0;
}