最近在看侯捷的视频,里面有提到模板以及操作符重载的一些东西,也让我回忆起了在学校里面学习的知识。相当于做一个总结吧。
模板类
首先看一个简单的模板类
template<typename T = string>
class BasicTemplateClass
{
public:
BasicTemplateClass()
{
cout << "template class..." << endl;
}
};
调用它的方式很简单
BasicTemplateClass<> obj_1;
BasicTemplateClass<int> obj_2;
这其中如果相对某一种类型特殊处理,可以特化某一个模板
template<>
class BasicTemplateClass<string>
{
public:
BasicTemplateClass()
{
cout << "string version template class..." << endl;
}
};
然后我们在调用stirng版本的类额时候,就会打出 string version template class...
在看一个偏特化的模板类
template<typename T, typename Y = int>
class BasicTemplateClass
{
public:
BasicTemplateClass()
{
cout << "size_T:" << sizeof(T) << ", size_Y:" << sizeof(Y) << endl;
}
};
调用它的方式也很简单
BasicTemplateClass&