类模版

类模版

concept:

同函数模版(我文章中有写函数模版)

另外:类模版和函数模版的区别如下

1,类模版没有自动类型推导方式,只能用显式指定类型

2,类模板在模版参数列表中可以有默认参数(就是在类定义的的时候就指定默认的参数类型)

类模版与继承:

1,当子类继承的父类是一个类模版的时候,子类在声明的时候要指定父类中T的类型,如果不指定(指定就是在之类定义的时候后面加上<int>类似这样的一部分),编译器不知道分配多少内存,也就不能进行继承。

2,如果想灵活指定父类中的类型,之类也需要变为类模版就是子类在定义的时候后面加上<T>这样的东西。

 T1是子类中的模版参数,T2是父类中的模版参数。

类模版成员函数的类外实现(一般都是类内实现):

类模版构造函数的类外实现:

 类模版成员函数的类外实现:

 类模版的分文件编写出现的问题以及解决办法(普通的类分文件编写是没有问题的):

分文件编写时,类模版的成员函数的创建时间是在调用阶段,导师分文件编写时链接不到。

解决方法1:

将分文件编写的源文件(包含成员函数具体实现的.cpp文件)包含进去

解决方法2:

将类的定义和类内函数实现都写在类的定义头文件中,将头文件.h改成.hpp

core:

将模版内的数据类型进行参数化

attention!

类模版中成员函数的创建时机和普通函数中的成员函数创建时机是有区别的!!!

*普通函数中的成员函数一开始就可以创建  

*类模版中的成员函数在调用的时候才创建

skills:

类模版对象做函数参数

//1,指定传入类型

就是在函数定义的时候在形参中就表示要传入的类型,这个使用的最为频繁,后面两种是函数模版配合类模版进行使用,代码看起来会比较复杂。

//2, 参数模板化

将传入的参数进行模板化、但是需要告诉编译器这个传入的参数(模版中的T)是模版中的参数

//3,整个类模板化

传入的是一个模版,传入什么数据类型就是什么数据。

examples:

comment:

模版这块就是将数据类型进行参数化,在进行架构设计的时候一定要把模版考虑在内。

原文地址:https://www.cnblogs.com/yykyykyyk/p/14086196.html