如果一个类中的数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的、实际的类,而是代表一类类。
1. 类型模板进行不同类型 : 使用类模板进行隐藏数据类型
- 定义类模板
//使用类模板进行隐藏数据类型
template
<
class
T1
,
class
T2
>
class
myClass
{
public:
myClass
(T1 a, T2 b):
I
(a),
J
(b){};
void
show
() {
cout
<<
"I="
<<
I
<<
", J="
<<
J
<<
endl;
}
private:
T1 I;
T2 J;
};
- 实例化这个类模板
myClass
<
int
,
int
>
class1
(
3
,
5
);
class1.
show
();
myClass
<
int
,
char
>
class2
(
3
,
'a'
);
class2.
show
();
myClass
<
double
,
int
>
class3
(
2.9
,
10
);
class3.
show
();
- 测试结果
I
=
3
, J
=
5
I
=
3
, J
=
a
I
=
2.9
, J
=
10
2. 使用类模板进行内存的动态分配
//使用类型模块进行动态内存分配
template
<
int
MemSize
=
0
>
class
Node
{
public:
Node
():
_memsize
(MemSize) {
cout
<<
"_memsize:"
<<
_memsize
<<
endl;
}
~Node
(){}
void
get_memsize
()
{
return
_memsize;
}
private:
char
buf[MemSize];
int
_memsize;
};
- 实例化这个类模板
Node
<
5
>
node;
- 输出结果:
_memsize:
5
这样就可以动态定义