模板类的继承

来源:互联网 发布:json转base64 编辑:程序博客网 时间:2024/04/29 16:23

模板类的继承包括四种:

1.(普通类继承模板类)

2.(模板类继承了普通类(非常常见))

3.(类模板继承类模板)

4.(模板类继承类模板,即继承模板参数给出的基类)

其中,普通类继承模板类比较简单,如

复制代码
1 template<class T>2 class TBase{3     T data;4 ……5 };6 class Derived:public TBase<int>{7 ……8 };
复制代码

模板类继承普通类:

复制代码
1 class TBase{2 ……3 };4 template<class T>5 class TDerived:public TBase{6 T data;7 ……8 };
复制代码

类模板继承类模板:

复制代码
 1 template<class T> 2 class TBase{ 3 T data1; 4 …… 5 }; 6 template<class T1,class T2> 7 class TDerived:public TBase<T1>{ 8 T2 data2; 9 ……10 };
复制代码

4. 模板类继承模板参数给出的基类

    ——继承哪个基类由模板参数决定

复制代码
 1 #include<iostream> 2 using namespace std; 3  4 class BaseA{ 5 public: 6     BaseA(){cout<<"BaseA founed"<<endl;} 7 }; 8 class BaseB{ 9 public:10     BaseB(){cout<<"BaseB founed"<<endl;}11 };12 template<typename T, int rows>13 class BaseC{14 private:15     T data;16 public:17     BaseC():data(rows){18         cout<<"BaseC founed "<< data << endl;}19 };20 template<class T>21 class Derived:public T{22 public:23     Derived():T(){cout<<"Derived founed"<<endl;}24 };25 26 void main()27 {28     Derived<BaseA> x;// BaseA作为基类29     Derived<BaseB> y;// BaseB作为基类30     Derived<BaseC<int, 3> > z; // BaseC<int,3>作为基类31 }
复制代码

第四个比较奇怪点,,,深思ing。。。

原创粉丝点击