天天看點

類模闆與派生

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;
}      

繼續閱讀