前言
先学习模板知识
一.什么是模板
模板是c++的一种特性,允许函数或者类(对象)通过泛型(generic types)的形式表现或者运行
模板可以使得函数或类在对应不同的类型(types)的时候正常工作,而无需为每一种类型分别写一份代码。
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。
二.模板有那几种类型
1:函数模板(function tempalte):使用泛型参数的函数(function with generic parameters)
2:类模板(class template):使用泛型参数的类(class with generic parameters)
什么是函数模板?
函数模板是参数化的一族函数(a famliy of functions)
通过函数模板,可以实例化一系类函数,这些函数都给予同一套模板框架,但是作用在不通类型的参数上
类模板
与函数模板类似,类也可以通过参数泛化,从而可以构建出一族不同的类实例(对象)
类模板实参可以是某一类型或常量(仅限int或enum)
三.模板的优缺点
(1) 优点 :
1)编写一个模板,就可以在实例化的时候 由一个模板解决不同类型数据所产生的相同问题;比如说排序问题,你可以给int 数据排序和cha类型数据排序,没有引入类模板,就需要编写两次排序函数,而引入类模板之后,就可以在实例化的时候,根据不同的数据类型实例化排序方法,做到一模板半多用的作用,即多态。
2)实现了代码的重用,节约了程序员时间和精力,这也是出现标准库的原因
(2) 缺点:
1)模板的数据类型只能在编译时才能被确定。因此,所有用基于模板算法的实现必须包含在整个设计的头文件中。
2)由于模板只是最近加入C++标准中,所以有些C++编译器还不支持模板,当使用这些编译器时编译含有模板的代码时就会发生不兼容问题。
总结
认知模板的两种类型