【C++】什么是模板?

小八哥向前冲~ 2024-08-25 13:35:05 阅读 50

有不懂的地方可以翻阅我之前文章!

                             个人主页:CSDN_小八哥向前冲

                              所属专栏:CSDN_C++入门


目录

模板函数

泛型编程

函数模板

类模板


模板函数

泛型编程

在之前的学习里,我们知道函数可以重载,当我们在实现多参数函数交换时,我们可以这样写:

但是这样写,有很多弊端。如:

重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增 加对应的函数。代码的可维护性比较低,一个出错可能所有的重载均出错

那能不能告诉编译器一个模子,让编译器根据你提供的类型来生成相对应的代码呢?

如:

像这样,如果C++中也有这样的一个模具,那我们的代码可以省很多事!

这里一个新的概念:

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

现在我们具体重点介绍一下函数模板和类模板。

函数模板

用不同类型的参数使用函数模板时,称为函数模板的实例化。

模板参数实例化分为:隐式实例化和显式实例化。

隐式实例化:让编译器根据实参推演模板参数的实际类型。

如:

显示实例化:在函数名后的<>中指定模板参数的实际类型

模板参数的匹配原则

如果非模板函数非常契合,那么就会调用非模板函数而不会调用模板去实例化。

类模板

类模板的定义格式

例如:一个栈类

注意:模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。

我们下期见!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。