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