类模板
为什么需要类模板?
类模板与函数模板的定义和使用类似,我已经进行了介绍。 有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:

作用:
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 ;
}
二、继承中的类模板语法

结论: 子类从模板类继承的时候,需要让编译器知道 父类的数据类型具体是什么(数据类型的本质:固定大小内存块的别名) A<int> 。
class B : public A<int>
{
public:
B(int i) : A<int>(i)
{
}
void printB()
{
cout<<"A:"<<t<<endl;
}
protected:
private:
};
//模板与上继承
//怎么样从基类继承
//若基类只有一个带参数的构造函数,子类是如何启动父类的构造函数
void pintBB(B &b)
{
b.printB();
}
void printAA(A<int> &a) //类模板做函数参数
{
//
a.getT();
}
void main()
{
A<int> a(100); //模板了中如果使用了构造函数,则遵守以前的类的构造函数的调用规则
a.getT();
printAA(a);
B b(10);
b.printB();
cout<<"hello..."<<endl;
system("pause");
return ;
}

浙公网安备 33010602011771号