前言
好久不见,甚是想念。有一段时间没有法发过博客了,之前那段时间自我感觉比较颓废,就硬是打不起精神,STL也没管了,自己学校的学习也比较马虎,再之后就又是要赶一堆复习啊,ddl之类的,所以不知不觉时间就过去了许久。今天再次想要重新填STL的坑,竟是忘记了自己做到了哪里,之前学了什么,好在能在之前的博客里重拾记忆,继续新的填坑之旅。
在上一篇中的内容是函数模板,今天我们继续推进,讲类模板。
类模板
函数模板就是把函数类型参数化了,类模板则也是一样的。
单个类模板的语法
template<class T>
class Person{
public:
Person(T id,T age){
this->mAge = age;
this->mId = id;
}
void Show() {
cout << "ID:" << mId << "Age:" << mAge << endl;
}
T mId;
T mAge;
};
void test01() {
//函数模板调用的时候,可以自动类型推导
//类模板必须显式指定类型
Person<int> p(10,20);
p.Show();
}
就创造了单个的类模板,这里由于类模板必须显式指定类型,所以用了< int >,表示这个person是int类型的
类模板派生类与类模板派生类模板
类模板派生类
template<class T>
class Person{
public:
Person(){
mAge = 0;
}
T mAge;
};
//下面之所以要加<int>是因为要在类区定义对象的话,需要分配内存,所以需要指定类型
class SubPerson: public Person<int>{};
类模板派生类模板
template<class T>
class Animal{
public:
void bark(){
cout << mAge << "岁动物在叫:" << endl;
}
T mAge;
};
template <class T>
class Cat: public Animal<T>{};
//这里的参数列表由类模板给出,所以就不需要再指定类型了
int main(void)
{
Cat<int> cat;
return 0;
}
结束
重拾之前的就业,感觉的确今天写的内容与质量不高了。最近一段时间都会采取这样比较短幅的方式来记录知识点,今后会慢慢找回状态。之后还有学校布置的MFC学习任务,还有Qt啊,数模啊。balabalabala。。。挖的坑太多了,害,慢慢填吧。