1. 模块基类不用指定传参类型
// 定义模板类,作为父类 templateclass People { public: T x; People(){}; People(T a):x(a){}; }; // 定义派生类 template class Man:public People { public: T y; Man(){}; Man(T a):y(a){}; Man(T a, T b):People (a),y(b){}; }; // 类的使用 int main(void) { Man m1(3, 7); // a=3 b=7 a对应x,b对应y,所以x=3,y=7 cout << "x = " << m1.x << ", y = " << m1.y << endl; return 0; }
2. 模板基类也可以指定传参类型
// 定义模板类,作为父类 templateclass People { public: T x; People(){}; People(T a):x(a){}; }; // 定义派生类,继承模板类,指定派生类传入 double 类型 template class Man:public People { public: T y; Man(){}; Man(T a):y(a){}; Man(double a, T b):People (a),y(b){}; };
3. 普通类继承模板类
// 定义模板类,作为父类 templateclass People { public: T x; People(){}; People(T a):x(a){}; }; //普通类继承模板类 class Man:public People { public: double y; Man(){}; Man(double a):y(a){}; Man(double a, double b):People (a),y(b){}; // x在前,y在后 };
4. 类模板继承普通类
// 定义基类,普通类
class People
{
public:
double x;
People(){};
People(double a):x(a){};
};
// 派生类,类模板继承普通类
template class Man:public People
{
public:
T y;
Man(){};
Man(T a):y(a){};
Man(double a, T b):People(a),y(b){};
};


![[C++]模板类的继承 [C++]模板类的继承](http://www.mshxw.com/aiimages/31/457602.png)
