zoukankan      html  css  js  c++  java
  • 模板类的继承

    模板类的继承包括四种:

    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 };
    View Code

    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 }
    View Code

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

  • 相关阅读:
    Oracle expdp impdp中 exclude/include 的使用
    Oracle表空间迁移Move Tablespace
    m2ewtp的作用
    有意思的排序算法合并排序
    有意思的排序算法插入排序
    equals与“==”之惑
    简化的打印语句静态导入
    有意思的排序算法堆排序
    博客开篇语
    MySQL 整理笔记 张大哥
  • 原文地址:https://www.cnblogs.com/xiezhw3/p/3084352.html
Copyright © 2011-2022 走看看