C++_模板
C&C++中的模板是泛型编程的基础
泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。算法与数据形式分离。
C++中模板分为两种,一种是模板函数,一种是模板类。
使用模板参数构建出的函数就是模板函数,使用模板参数构建出的类就是模板类。
(所以可以看出重要的地方是模板参数)
在写了一个模板函数之后,编译时,编译器会根据用户给出的模板参数的实例化来自动生成相应的函数(类模板同理
模板的使用体现了C++程序的复用性和多态性
(函数重载也体现了多态性,但是函数重载是比较有限的,能覆盖的不同参数是有限的)
多态性:静态多态(模板)(编译时多态),动态多态(继承)(运行时多态)
==模板参数分为三类==
- 类型参数
通过 关键字 typename 或者 class 引入(两者基本上是等价的)
- 非类型参数
模板参数不局限于类型,类型的值也可以作为模板参数,通过 关键字 值的类型 引入
目前C++只支持 整形 / 枚举类型 / 指针类型(可以是原始数据类型的指针、派生数据类型的指针、对象的指针、对象的成员的指针) / 引用类型(可以是原始数据类型的引用、派生数据类型的引用、对象的引用)
- 模板型模板参数
==模板参数支持缺省==
但是要注意的是,缺省参数的使用不要忘了按照规范形式,比如在类或函数声明时加了缺省值,在实现时就不要加了
(缺省值在声明时添加,在实现时就不添加了)
还有,缺省要从右往左缺省
https://blog.csdn.net/zhizhengguan/article/details/115869685
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 浴巾的贼船!
评论