天天看点

类模板与派生

01 类模板从类模板派生

类模板与派生

上图的代码例子如下:

// 基类 - 类模板
template <class T1,class T2>
class A 
{
    T1 v1; T2 v2;
};

// 派生类 - 类模板
template <class T1,class T2>
class B:public A<T2,T1> 
{
    T1 v3; T2 v4;
};

// 派生类 - 类模板
template <class T>
class C:public B<T,T> 
{
    T v5;
};

int main() 
{
    B<int,double> obj1; 
    C<int> obj2;
    return 0;
}      

02 类模板从模板类派生

类模板与派生

上图的代码例子如下:

template <class T1,class T2>
class A 
{
    T1 v1; T2 v2;
};

template <class T>
class B:public A<int,double>  // A<int,double> 模板类
{
    T v;
};

int main() 
{
    //自动生成两个模板类 :A<int,double> 和 B<char>
    B<char> obj1;
    return 0;
}      
// 基类 - 普通类
class A 
{
    int v1;
};

// 派生类 - 类模板
template <class T>
class B:public A  // 所有从B实例化得到的类 ,都以A为基类
{ 
    T v;
};

int main() 
{
    B<char> obj1;
    return 0;
}      
template <class T>
class A 
{
    T v1;
};

class B:public A<int> 
{
    double v;
};

int main() 
{
    B obj1;
    return 0;
}      

继续阅读