【C++奇遇记】函数模板

2024-02-27 1493阅读

温馨提示:这篇文章已超过408天没有更新,请注意相关的内容是否还可用!

🎬 博客主页:博主链接

🎥 本文由 M malloc 原创,首发于 CSDN🙉

🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构

🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📆 未来很长,值得我们全力奔赴更美好的生活✨

【C++奇遇记】函数模板

【C++奇遇记】函数模板

文章目录

  • 😇本章详情
  • 😇函数模板的前情介绍
  • 😇利用函数模板来定义交换函数
    • 📝建立交换模板
    • ✉重载的模板
    • 📋模板的局限性
    • 😇显示具体化
    • 📃如何巩固学习
    • 📃本文小结

      😇本章详情

      🐤本篇文章将讲授C++的函数模板相关的知识

      😇函数模板的前情介绍

      😁现在的C++编译器实现了C++新增的一项特性—函数模板。函数模板。函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时也被称为通用编程。由于类型是用参数表示的,因此模板特性有时也被称为参数化类型。

      😇利用函数模板来定义交换函数

      📝建立交换模板

      template 
      void swap(T& a,T& b)
      {
      	T temp;
      	temp = a;
      	a = b;
      	b = temp;
      }
      

      解析

      第一行指出,要建立一个模板,并将类型命名为T。关键字template和typename是必需的,除非可以使用关键字class代替typename。另外,必须使用尖括号。类型名可以任意选则(这里为T),只要遵守C++命名规则即可。模板并不创建任何函数,而只是告诉编译器如何定义函数。需要交换int的函数时,编译器将按模板模式创建这样的函数,并用int代替T。同样交换double的函数时,编译器将按模板模式创建这样的函数,并有double代替T。


      C++98之前的定义方式

      在标准C++98添加关键字typename之前,C++使用关键字class来创建模板

      template
      void swap(T& a,T& b)
      {
      	T temp;
      	temp = a;
      	a = b;
      	b = temp;
      }
      

      typename关键字使得参数T表示类型这一点更为明显;然而,有大量的代码库是使用关键字class开发的。这两种关键字等价的。

      ✉重载的模板

      💐需要多个对不同类型使用同一种算法的函数时,可使用模板,然而并且所有的类型都使用相同的算法。为满足这种需求,可以向重载常规函数定义那样重载模板定义。和常规重载一样,被重载的模板的函数特征标必须不同。例如,在下方代码中新增了一个交换模板,用于交换两个数组中的元素。原模板的特征标为(T&, T&),而新模板的特征标为(T[], T[], int)。在后一个模板中,最后一个参数的类型为具体类型int,而不是泛型。并非所有的模板参数都必须是模板参数类型。


      代码演示

      #define _CRT_SECURE_NO_WARNINGS 1
      #include
      #include
      using namespace std;
      template 
      void Swap(T& a,T& b);// new templatetemplate 
      template 
      void Swap(T *a,T *b,int n);
      void Show(int a[]); 
      const int Lim = 8; 
      int main()
      {
      	int i = 10, j = 20;
      	cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]