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