lei
1.类模板的介绍:类模板和函数模板的定义和使用类似,有两个或多个类,其功能是相同的,仅仅是数据类型不同。
类模板用于实现类所需数据的类型参数化;
类模板在表示数组、表、图等数据结构时非常重要,可以实现数据类型和算法的分离。
2.类模板的使用:具体如下代码
类模板的定义以及使用:
template<typename T>
class A
{
public:
A(T t)
{
this->t = t;
}
T &getT()
{
return t;
}
protected:
public:
T t;
};
void main()
{
//模板了中如果使用了构造函数,则遵守以前的类的构造函数的调用规则
A<int> a(100); //模板类是抽象的,需要进行类型具体化
a.getT();
printAA(a);
return ;
}
3.类模板做函数参数:
void UseA( A<int> &a )
{
a.printA();
}
4.从模板类派生出普通类
//结论: 子类从模板类继承的时候,需要让编译器知道父类的数据类型具体是什么(数据类型的本质:固定大小内存块的别名)A<int>
//
class B : public A<int>//要在这里对父类参数化,写在类名的后面
{
public:
B(int i) : A<int>(i)
{
}
void printB()
{
cout<<"A:"<<t<<endl;
5.从模板类派生出模板类
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;
};