025 泛型程序设计(Generic Programming)函数模板 类模板 String类 template
参考内容:
0)北京大学信息科学技术学院《程序设计实习》,郭伟老师&刘家瑛老师
目录
一、模板的基本概念,以排序问题为例
总结来说,对于功能相同,而输入参数类型不同的同名函数,除函数重载外的另一种更简便的方法。
我就简单理解为:函数模板是对重载函数的进一步抽象
先回顾一下函数重载:
0)函数重载与函数模板
是不是很酷?
举个例子:输出全部数组元素(函数本身提前不知道数组元素类型,就先记为“T”)
编译系统会根据输入参数类型自动的生成相应的模板函数
这样还不够,一个模板函数可以有多种类型参数
另外
注意:与函数重载一样,函数模板也要避免二义性
1)函数与模板的匹配顺序
二、类模板
当你觉得类已经比较抽象了,too young too simple!类还可以进一步抽象,惊不惊喜意不意外
0)类模板引出
1)类模板的定义
2)类模板的概念
3)定义类模板的成员函数
好了,以上都是铺垫啊!本文的重点马上要登场了
三、泛型程序设计
现在可以回顾一下,前面说的函数模板和类模板是不是属于泛型函数设计的范畴!
使用类模板声明对象的时候要注意:
0)类模板与非类型参数
这里又出现了一个新概念:非类型参数,不要慌,前面其实已经出现了,看下面的定义
好,我们已经知道类模板可以派生出模板类,其实类模板的继承关系有很多
1)类模板与继承
2)类模板与友函数
有四种情况:
举例略
3)类模板与static成员
四、string类
为什么吧string类放这里,是因为它是由类模板派生来的模板类!
用的比较多,放到下一篇文章单独说!