模板類的繼承包括四種:
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。。。