有不懂的地方可以翻阅我之前文章!
个人主页:CSDN_小八哥向前冲
所属专栏:CSDN_C++入门
目录
模板函数
泛型编程
函数模板
类模板
模板函数
泛型编程
在之前的学习里,我们知道函数可以重载,当我们在实现多参数函数交换时,我们可以这样写:
但是这样写,有很多弊端。如:
- 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增 加对应的函数。
- 代码的可维护性比较低,一个出错可能所有的重载均出错
那能不能告诉编译器一个模子,让编译器根据你提供的类型来生成相对应的代码呢?
如:
像这样,如果C++中也有这样的一个模具,那我们的代码可以省很多事!
这里一个新的概念:
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。
现在我们具体重点介绍一下函数模板和类模板。
函数模板
用不同类型的参数使用函数模板时,称为函数模板的实例化。
模板参数实例化分为:隐式实例化和显式实例化。
隐式实例化:让编译器根据实参推演模板参数的实际类型。
如:
显示实例化:在函数名后的<>中指定模板参数的实际类型
模板参数的匹配原则
如果非模板函数非常契合,那么就会调用非模板函数而不会调用模板去实例化。
类模板
类模板的定义格式
例如:一个栈类
注意:类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。
我们下期见!