CPPTemplates之类模板的继承

2014-11-19 14:46:55 · 作者: · 浏览: 32

  类模板可以继承也可以被继承。


  1.在一个类模板中,一个非依赖型基类是指:无须知道模板实参就可以完全确定类型的


  基类。


  例如:


  template


  class Base{


  public:


  int basefield;


  typedef int T;


  };


  class D1:public Base >{//实际上不是模板


  public:


  void f(){basefield = 3; }


  };


  template


  class D2:public Base {


  public:


  void f() { basefield = 7; }//正常访问继承成员


  T strange;//T是Base ::T,而不是模板参数


  };


  注意事项:对于模板中的非依赖类型而言,如果在他的派生类中查找一个非受限名称,那就会先查找这个非依赖型基类,然后才会查找模板参数列表。


  2.非依赖性名称不会在依赖基类中查找


  template


  class Base{


  public:


  int basefield;


  typedef int T;


  };