模板的继承

下面有关函数模板和类模板的说法正确的有?

A. 函数模板的实例化是由编译程序在处理函数调用时自动完成的

B. 类模板的实例化必须由程序员在程序中显式地指定

C. 函数模板的模板参数仅针对参数类型

D. 类模板的模板参数仅针对数据成员和成员函数类型

C: 函数模版还可以将 函数返回值类型 作为模版参数。

D: 类模板还可以针对 继承的基类类型 作为模板参数


类模板和类模板之间、类模板和类之间可以互相继承。它们之间的派生关系有以下四种情况:

  • 类模板继承类模板
  • 类模板继承模板类
  • 类模板继承普通类
  • 普通类继承模板类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//==============================================1、类模板继承类模板
template <typename T1, typename T2>
class A
{
T1 x;
T2 y;
};
template <typename T1, typename T2>
class B : public A<T2, T1>
{
T1 x1;
T2 y2;
};
template <typename T1,T2, T3>
class C : public B<T1, T3>
{
T2 x3;
};
//==============================================2、类模板继承模板类
template <typename T>
class D : public A<int, double> //具体化的模板类
{
T x4;
};
//==============================================3、类模板继承普通类
class E
{
int x4;
};
template <typename T>
class F : public E
{
T X5;
};
//==============================================4、普通类继承模板类
class H : public F<int>
{
int h;
};