iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++模板参数的具体概念是什么
  • 734
分享到

C++模板参数的具体概念是什么

2023-06-17 17:06:58 734人浏览 安东尼
摘要

这篇文章给大家介绍c++模板参数的具体概念是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C++编程语言是一个功能强大的计算机应用语言,它的出现在一定程度上大大降低了开发人员的负担,提高了开发效率。我们在这里先来了

这篇文章给大家介绍c++模板参数的具体概念是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

C++编程语言是一个功能强大的计算机应用语言,它的出现在一定程度上大大降低了开发人员的负担,提高了开发效率。我们在这里先来了解一下C++模板参数的相关概念。简单的说,可以把模板看作一种类型,函数模板也不例外。

既然是类型,那么我们在使用模板函数的时候就应该是使用它的一个实例。既然是类型与实例的关系,那么就应该有一个类型的实例化的问题。我们对普通类型进行实例化的时候通常需要提供必要的参数以,模板函数也不例外。只是C++模板参数不是普通的参数,而是特定的类型。也就是说在实例化一个函数模板的时候需要以类型作为参数。通常,模板的参数分为模板参数和调用参数。例如:

template <typename T1, typename T2, typename RT> inline RT const& max(T1 const& a, T2 const& b)  {  //TODO: 代码实现  ........  }

其中,***行定义了函数模板参数;第二行的函数参数则定义了调用参数,需要注意的是返回值并不属于函数模板的调用参数。

在调用一个模板的时候,最重要的是在调用的时候能正确的推导出C++模板参数。这里有几点要注意的:

1:显示的实例化函数模板。例如:

template <typename T> inline T const& max(T const& a, T const& b)  {  return a < b ? b : a;  }  // 实例化并调用一个模板  max<double>(4, 4.2);

第十行,通过显示的指定C++模板参数为double而实例化了一个模板。

2:隐式的实例化一个函数模板。例如:

template <typename T> inline T const& max(T const& a, T const& b)  {  return a < b ? b : a;  }  // 隐式的实例化并调用一个函数模板  int i = max(42, 66);

第8行,我们没有显示的指定函数模板参数,但它能自动的去推导出函数模板参数为int。这里可能有个问题。如果非模板函数它的定义和推导后的模板函数实例一样,会产生什么结果呢?例如:

inline int const& max(int const& a, int const& b)  {  // 为了便于区分,让返回结果+100  return a < b ? a+10 : b+100;  }  template <typename T> inline T const& max(T const& a, T const& b)  {  return a < b ? b : a;  }  // 这里调用的究竟是模板函数还是非模板函数?  int i = max(42, 66);

实际上,第14行的代码首先回去查看是否有满足要求的非模板函数;如果没有,再根据参数去匹配并实例化相应的模板函数。所以,它调用的应该是非模板的max函数。

3: 也可以使用部分缺省的C++模板参数。你不用指定全部的模板参数,比如,你可以从左到右的,指定一部分参数。例如:

// 从左至右定义了三个参数  template <typename RT, typename T1, typename T2> inline RT const& max(T1 const& a, T2 const& b)  {  //TODO: 代码实现  ..  }  // 可以只指定***个返回参数。即,要求返回double类型  max<double>(4, 4.2);

上面的代码中,由于返回参数类型不属于调用参数,所以必须明确的指定它为double类型。而T1和T2属于调用C++模板参数,能从函数调用中推导出来。

关于C++模板参数的具体概念是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C++模板参数的具体概念是什么

本文链接: https://www.lsjlt.com/news/290870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++模板参数的具体概念是什么
    这篇文章给大家介绍C++模板参数的具体概念是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C++编程语言是一个功能强大的计算机应用语言,它的出现在一定程度上大大降低了开发人员的负担,提高了开发效率。我们在这里先来了...
    99+
    2023-06-17
  • C++非类型类模板参数的基本概念是什么
    C++非类型类模板参数的基本概念是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C++编程语言已经出现就立即引起了开发人员的注意,它具有C语言的所用功能,并...
    99+
    2023-06-17
  • C++缺省参数的概念是什么
    这篇文章主要介绍了C++缺省参数的概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++缺省参数的概念是什么文章都会有所收获,下面我们一起来看看吧。一、缺省参数概念缺省参数是声明或定义函数时为函数的参数...
    99+
    2023-06-26
  • C#的概念是什么
    本文小编为大家详细介绍“C#的概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C#简介    &nb...
    99+
    2023-06-27
  • linux gcc的概念及其参数是什么
    这篇文章给大家介绍linux gcc的概念及其参数是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。下面是小编给大家搜集关于块设备的概念以及作用。1、linux gcc包含的c/c++编译器gcc、cc、c...
    99+
    2023-06-17
  • C#概念指的是什么
    这篇文章给大家介绍C#概念指的是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#概念谈到C#入门我们首先来看看C#,它是是一种简洁、类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET Framewor...
    99+
    2023-06-17
  • c++中null的概念是什么
    在C++中,通常使用nullptr关键字来表示空指针或空对象。nullptr是C++11引入的一种特殊类型的字面值,用于表示空指针。...
    99+
    2024-03-12
    c++
  • c#中#region的概念是什么
    在C#中,#region 是用来定义一个折叠区域的标记,可以帮助开发人员组织和管理代码。通过使用 #region 标记,可以将一段代...
    99+
    2024-03-05
    c#
  • C++异常的概念是什么
    C++异常的概念是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。运用编程语言进行程序开发时,都需要进行异常的处理,才能使我们的程序完善。在C++语言中,同样也有关于异常...
    99+
    2023-06-17
  • c++分离讲解模板的概念与使用
    目录泛类编程函数模板函数模板的概念函数模板的使用函数模板的实例化函数模板的匹配原则类模板类模板的定义格式类模板的实例化泛类编程 学习模板,首先我们需要了解一下什么是泛类编程 #inc...
    99+
    2024-04-02
  • C# Lambda Expression概念是什么
    本篇内容主要讲解“C# Lambda Expression概念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C# Lambda Expression概念是什么”吧!1.关于C# Lambd...
    99+
    2023-06-17
  • C++基础概念是什么
    这篇文章主要讲解了“C++基础概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++基础概念是什么”吧!首先,通过一张最新(2021.11)的编程语言排名图来了解常见的编程语言:从图...
    99+
    2023-06-22
  • C++可变参数模板的展开方式是什么
    这篇文章主要讲解了“C++可变参数模板的展开方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++可变参数模板的展开方式是什么”吧!可变参数模板(variadic templates...
    99+
    2023-06-29
  • CSS框模型的概念是什么
    这篇文章主要介绍“CSS框模型的概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS框模型的概念是什么”文章能帮助大家解决问题。   元素框的最内部分是...
    99+
    2024-04-02
  • python中模块的概念是什么
    在Python中,模块是一个包含了函数、类和变量定义的文件。模块可以被其他程序导入和使用,这样可以使代码更加组织结构化并且可重用。通...
    99+
    2023-09-13
    python
  • 数据库关系模型的概念是什么
    数据库关系模型是一种用于描述和组织数据库中数据的概念模型。它基于数学关系理论,主要用于定义数据之间的逻辑关系,以及数据的组织和操作方...
    99+
    2023-10-10
    数据库
  • c#索引器的概念是什么
    索引器是一种特殊的属性,允许类的实例像访问数组一样访问对象的元素。索引器可以通过类似于数组访问的语法来访问类中的元素,而不是通过对象...
    99+
    2024-03-05
    c#
  • C++ void的基础概念是什么
    本篇文章为大家展示了C++ void的基础概念是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C++编程语言中的很多概念都值得我们去不断的学习,不断的从中积累经验以帮助我们在程序编写时获得更大的...
    99+
    2023-06-17
  • 流媒体服务器的概念是什么
    流媒体服务器是一种特殊的服务器,用来存储、管理和传输流媒体数据,如音频和视频。它能够实时地将媒体内容传输到用户设备,以便用户可以直接...
    99+
    2024-05-06
    服务器
  • C++数据结构之堆的概念是什么
    今天小编给大家分享一下C++数据结构之堆的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。堆的概念堆(heap)是计...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作