当前位置:首页 » 《我的小黑屋》 » 正文

【C++】什么是模板?

22 人参与  2024年09月07日 15:25  分类 : 《我的小黑屋》  评论

点击全文阅读


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

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

                              所属专栏:CSDN_C++入门


目录

模板函数

泛型编程

函数模板

类模板


模板函数

泛型编程

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

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

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

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

如:

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

这里一个新的概念:

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

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

函数模板

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

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

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

如:

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

模板参数的匹配原则

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

类模板

类模板的定义格式

例如:一个栈类

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

我们下期见!


点击全文阅读


本文链接:http://zhangshiyu.com/post/156735.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1