类模板可以继承也可以被继承。
1.在一个类模板中,一个非依赖型基类是指:无须知道模板实参就可以完全确定类型的
基类。
例如:
template<typename X>
class Base{
public:
int basefield;
typedef int T;
};
class D1:public Base<Base<void> >{//实际上不是模板
public:
void f(){basefield = 3; }
};
template<typename T>
class D2:public Base<double>{
public:
void f() { basefield = 7; }//正常访问继承成员
T strange;//T是Base<double>::T,而不是模板参数
};
注意事项:对于模板中的非依赖类型而言,如果在他的派生类中查找一个非受限名称,那就会先查找这个非依赖型基类,然后才会查找模板参数列表。
2.非依赖性名称不会在依赖基类中查找
template<typename X>
class Base{
public:
int basefield;
typedef int T;
};
责任编辑:cyth