原文:https://blog.csdn.net/jfkidear/article/details/24656929?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-6.control&dist_request_id=1328656.763.16158121886674405&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-6.control
https://exp.newsmth.net/topic/9ed77d7bfcb8169d011c2ed5ab3259d7
今天想针对不同指针类型写一系列处理函数,同函数重载,写了一大堆同名的函数重载,看类声明感觉极其丑陋。于是考虑模板及特化,测试了两段代码。
废话少说,贴代码。
例1:类模板的成员函数的特化
此处特化的是类
template <class T>
class Sample
{
public:
void print() {printf("\nprint template");}
};
void Sample<int>::print() {printf("\nprint int");};
// 调用
int _tmain(int argc, _TCHAR* argv[])
{
Sample<int> a;
a.print();
Sample<double> b;
b.print();
return 0;
}
// 输出
/*
print int
print template
*/
例2:类的成员模板函数的特化
此处,仅特化函数
class Sample2
{
public:
template <class T>
void print()
{printf("\nSample2 print template");}
};
template <>
void Sample2::print<int>()
{printf("\nSample2 print int");}
// 调用
int _tmain(int argc, _TCHAR* argv[])
{
Sample2 sam2;
sam2.print<double>();
sam2.print<int>();
return 0;
}
// 输出
/*
Sample2 print template
Sample2 print int
*/
https://www.dazhuanlan.com/2020/03/24/5e798f3d451f6/ 这个特别好
如果有重定义问题:https://www.cnblogs.com/roymuste/archive/2013/05/04/3059428.html