1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C++ 类模板(template)详解

C++ 类模板(template)详解

时间:2024-02-28 14:51:15

相关推荐

C++ 类模板(template)详解

目录

1.类模板的使用

1.1为什么需要类模板

1.2类模板定义

1.3单个类模板的使用

2.继承中类模板的使用

2.1父类是一般类,子类是模板类

2.2子类是一般类,父类是模板类

2.3父类和子类都是模板类

1.类模板的使用

1.1为什么需要类模板

类模板与函数模板的定义和使用类似,有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,我们可以通过如下面语句声明了一个类模板:

template <typename T>class A{public:A(T t){this->t = t;}T& getT(){return t;}public:T t;};

1.2类模板定义

类模板由模板说明和类说明构成

模板说明同函数模板,如下:

template<类型形式参数表>

类声明

例如:

template <typename Type>class ClassName{public://ClassName 的成员函数private:Type DataMember;}

1.3单个类模板的使用

#include <iostream>using namespace std;template <typename T>class A{public://函数的参数列表使用虚拟类型A(T t = 0){this->t = t;}//成员函数返回值使用虚拟类型T& getT(){return t;}private://成员变量使用虚拟类型T t;};void printA(A<int>& a) {cout << a.getT() << endl;}int main(void) {//1.模板类定义类对象,必须显示指定类型//2.模板种如果使用了构造函数,则遵守以前的类的构造函数的调用规则A<int> a(666);cout << a.getT() << endl;//模板类做为函数参数printA(a);system("pause");return 0;}

运行截图:

2.继承中类模板的使用

2.1父类是一般类,子类是模板类

class A {public:A(int temp = 0) {this->temp = temp;}~A(){}private:int temp;};template <typename T>class B :public A{public:B(T t = 0) :A(666) {this->t = t;}~B(){}private:T t;};

父类一般类,子类是模板类, 和普通继承的玩法类似。

2.2子类是一般类,父类是模板类

template <typename T>class A {public:A(T t = 0) {this->t = t;}~A(){}private:T t;};class B:public A<int> {public://也可以不显示指定,直接A(666)B(int temp = 0):A<int>(666) {this->temp = temp;}~B() {}private:int temp;};

子类是一般类,父类是模板类,继承时必须在子类里实例化父类的类型参数。

2.3父类和子类都是模板类

父类和子类都时模板类时,子类的虚拟的类型可以传递到父类中。

结论:

子类从模板类继承的时候,需要让编译器知道 父类的数据类型具体是什么

1.父类一般类,子类是模板类, 和普通继承的玩法类似

2.子类是一般类,父类是模板类,继承时必须在子类里实例化父类的类型参数

3.父类和子类都时模板类时,子类的虚拟的类型可以传递到父类中

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。