类模板与继承

Posted huanian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类模板与继承相关的知识,希望对你有一定的参考价值。

当类模板碰到继承时,需要注意以下几点:

1.当子类继承的父类是是一个类模板时,子类在声明的时候,要指定出父类中T的数据类型

2.如果不指定,编译器无法给子类分配内存

3.如果想要灵活的指出父类中T的类型,子类也需变为类模板

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 //类模板与继承
 6 template<class T>
 7 class Base
 8 {
 9 public:
10 
11     T m;
12 };
13 
14 //class Son :public Base//错误,必须知道父类中T的数据类型,才能继承给子类
15 class Son1 :public Base<int>
16 {
17 
18 };
19 
20 void test_01(void)
21 {
22     Son1 s1;
23 }
24 
25 //如果想灵活的指定父类中的T的类型,子类也需要变为类模板
26 template<class T1,class T2>
27 class Son2 :public Base<T1>
28 {
29 public:
30 
31     Son2()
32     {
33         cout << "T1的类型:" << typeid(T1).name() << endl;
34         cout << "T2的类型:" << typeid(T2).name() << endl;
35     }
36 
37     T2 obj;
38 };
39 
40 void test_02(void)
41 {
42     Son2<int, char>s2;//创建对象时,自动调用类的构造函数
43 }
44 
45 int main(void)
46 {
47     test_01();
48     test_02();
49 
50     system("pause");
51     return 0;
52 }

如果父类是类模板,子类需要指出父类中T的数据类型

以上是关于类模板与继承的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

-cpp代码重用(其他继承&模板)

C++模板类的继承

模板特化和从其他模板类继承模板类

Python Qt GUI设计入门模板类的单继承和多继承封装

MinGW 不识别从模板类继承为模板