1. 程式人生 > >模板類的繼承

模板類的繼承

toc title strong 基類 proc derived 四種 itl ocl

模板類的繼承包括四種:

1.(普通類繼承模板類)

[cpp] view plain copy
  1. template<class T>
  2. class TBase{
  3. T data;
  4. ……
  5. };
  6. class Derived:public TBase<int>{
  7. ……
  8. };



2.(模板類繼承了普通類(非常常見))

[cpp] view plain copy
  1. class TBase{
  2. ……
  3. };
  4. template<class T>
  5. class TDerived:public TBase{
  6. T data;
  7. ……
  8. };



3.(類模板繼承類模板)

[cpp] view plain copy
  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.(模板類繼承類模板,即繼承模板參數給出的基類)

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

模板類的繼承