1. 模块基类不用指定传参类型
// 定义模板类,作为父类
template <typename T> class People
{
public:
T x;
People(){};
People(T a):x(a){};
};
// 定义派生类
template <typename T> class Man:public People<T>
{
public:
T y;
Man(){};
Man(T a):y(a){};
Man(T a, T b):People<T>(a),y(b){};
};
// 类的使用
int main(void)
{
Man<int> 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. 模板基类也可以指定传参类型
// 定义模板类,作为父类
template <typename T> class People
{
public:
T x;
People(){};
People(T a):x(a){};
};
// 定义派生类,继承模板类,指定派生类传入 double 类型
template <typename T> class Man:public People<double>
{
public:
T y;
Man(){};
Man(T a):y(a){};
Man(double a, T b):People<double>(a),y(b){};
};
3. 普通类继承模板类
// 定义模板类,作为父类
template <typename T> class People
{
public:
T x;
People(){};
People(T a):x(a){};
};
//普通类继承模板类
class Man:public People<double>
{
public:
double y;
Man(){};
Man(double a):y(a){};
Man(double a, double b):People<double>(a),y(b){}; // x在前,y在后
};
4. 类模板继承普通类
// 定义基类,普通类
class People
{
public:
double x;
People(){};
People(double a):x(a){};
};
// 派生类,类模板继承普通类
template <typename T> class Man:public People
{
public:
T y;
Man(){};
Man(T a):y(a){};
Man(double a, T b):People(a),y(b){};
};