(1) 类模板派生出普通类:
#include <iostream>
using namespace std;
//A编程模板 类
//模板类 类型参数化
//类模板的定义
//类模板的使用
//类模板 做函数参数
//模板类
template <class T>
class A
{
public:
A(T a)
{
this->a = a;
}
public:
void printA()
{
cout << "a: " << a << endl;
}
protected:
T a;
};
//从模板类 派生了 普通类
// 模板类派生时, 需要具体化模板类. C++编译器需要知道 父类的数据类型具体是什么样子的
//=====> 要知道父类所占的内存大小是多少 只有数据类型固定下来,才知道如何分配内存
class B : public A<int>
{
public:
B(int a = 10, int b = 20) : A<int>(a)
{
this->b = b;
}
void printB()
{
cout << "a:" << a << " b: " << b << endl;
}
protected:
private:
int b;
};
void main()
{
B b1(1, 2);
b1.printB();
system("pause");
}
(2) 类模板派生出子类模板
#include <iostream>
using namespace std;
//A编程模板 类
//模板类 类型参数化
//类模板的定义
//类模板的使用
//类模板 做函数参数
//类模板
template <class T>
class A
{
public:
A(T a)
{
this->a = a;
}
public:
void printA()
{
cout << "a: " << a << endl;
}
protected:
T a;
};
//从模板类 派生 模板类
template <typename T>
class C : public A<T>
{
public:
C(T c, T a) : A<T>(a)
{
this->c = c;
}
void printC()
{
cout << "c:" << c << endl;
}
protected:
T c;
};
void main()
{
C<int> c1(1, 2);
c1.printC();
system("pause");
}