【C++】什么是模板?
小八哥向前冲~ 2024-08-25 13:35:05 阅读 50
有不懂的地方可以翻阅我之前文章!
个人主页:CSDN_小八哥向前冲
所属专栏:CSDN_C++入门
目录
泛型编程
函数模板
类模板
模板函数
泛型编程
在之前的学习里,我们知道函数可以重载,当我们在实现多参数函数交换时,我们可以这样写:
但是这样写,有很多弊端。如:
重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增 加对应的函数。代码的可维护性比较低,一个出错可能所有的重载均出错
那能不能告诉编译器一个模子,让编译器根据你提供的类型来生成相对应的代码呢?
如:
像这样,如果C++中也有这样的一个模具,那我们的代码可以省很多事!
这里一个新的概念:
泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。
函数模板
用不同类型的参数使用函数模板时,称为函数模板的实例化。
模板参数实例化分为:隐式实例化和显式实例化。
隐式实例化:让编译器根据实参推演模板参数的实际类型。
如:
模板参数的匹配原则
如果非模板函数非常契合,那么就会调用非模板函数而不会调用模板去实例化。
类模板
类模板的定义格式
例如:一个栈类
注意:类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。
我们下期见!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。