[C++开发 03 _ 模板(167)]

这篇具有很好参考价值的文章主要介绍了[C++开发 03 _ 模板(167)]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[C++开发 03 _ 模板(167)],c++,算法,开发语言

知识点1:模板

1.1模板的概念

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 模板的特点:

  • 模板不可以直接使用,它只是一个框架
  • 模板的通用并不是万能的

1.2函数模板

[C++开发 03 _ 模板(167)],c++,算法,开发语言

1.2.1函数模板语法

[C++开发 03 _ 模板(167)],c++,算法,开发语言

函数模板的引入:

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

函数模板的举例:[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 总结:

  • 函数模板利用关键字template
  • 使用函数模板有两种方式:1、自动类型推导     2、显示指定类型
  • 模板的目的是为了提高复用性,将类型参数化。
1.2.2函数模板注意事项

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

如果在调用函数时,不去确定T的类型,没法调用函数,会报错,因为编译也推导不出来是什么类型。调用函数的时候,要说明类型,func<int>();

总结:

  • 使用模板时必须确定出通用数据类型T,并且能够推导出一致的类型
1.2.3函数模板案例

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 [C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

1.2.4普通函数与函数模板的区别

[C++开发 03 _ 模板(167)],c++,算法,开发语言

隐式类型转换:

        int add(int a,int b);

调用时:传入两个float类型的变量,也可以编译通过,也能运行起来,这个就叫隐式类型转换。

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:建议使用显示类型的方式,调用函数模板,因为可以自己确定通用类型T。

1.2.5普通函数与和函数模板的调用规则

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

1.2.6模板的局限性

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 [C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:

利用具体化的模板,可以解决自定义类型的通用化

学习模板并不是为了写模板,而是在STL能够运用系统提供的模板

1.3类模板

1.3.1类模板语法

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

 总结:类模板和函数模板语法相识,在声明模板template后面加类,此类称为类模板

1.3.2类模板与函数模板的区别

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 [C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 ​​​​类模板可以有默认类型参数

将上面的类模板参数改写,其他不变

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言 [C++开发 03 _ 模板(167)],c++,算法,开发语言

 总结:

  • 类模板使用只能用显示指定类型参数。
  • 类模板中的模板参数列表可以有默认参数。
1.3.3类模板中成员函数创建时机

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 总结:

        类模板中的成员函数,并不是一开始就创建的,在调用时才去创建。

1.3.4类模板对象做函数参数

[C++开发 03 _ 模板(167)],c++,算法,开发语言 [C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

 总结:

  • 通过类模板创建的对象,可以有三种方式向函数中进行传参
  • 使用比较广泛的是第一中:指定传入类型
1.3.5类模板与继承

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:如果父类是类模板,子类需要指定出父类中T的数据类型。

1.3.6类模板成员函数类外实现

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:
因为在类外实现所以T1和T2函数是不知道是什么的,所以要template<class T1,class T2>;
类模板中函数类外实现要加上类模板参数列表加以和普通类区分。

1.3.7类模板分文件编写

 [C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:类模板分文件编写,因为类模板中的成员函数,并不是一开始就创建的,在调用时才去创建。所以分文件编写时不能连接到一起。所以我们再解决的时候,直接将类模板的声明和实现都写再同一个文件中,区别其他的头文件,我们将该类文件的扩展名改为.hpp。这样当别人看到这个.hpp文件的时候,就知道这是一个类模板,里面既有类的声明,也有类的实现。

1.3.8类模板与友元

[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

总结:建议全局函数做类内实现,用法简单,而且编译器可以直接识别。

1.3.9类模板案例

[C++开发 03 _ 模板(167)],c++,算法,开发语言

需求分析:

[C++开发 03 _ 模板(167)],c++,算法,开发语言

MyArray.hpp文件

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

MyArray.cpp文件

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言

[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言[C++开发 03 _ 模板(167)],c++,算法,开发语言文章来源地址https://www.toymoban.com/news/detail-809295.html

到了这里,关于[C++开发 03 _ 模板(167)]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask狼书笔记 | 03_模板

    模板 (template):包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 HTML实体 :https://dev.w3.org/html5/html-author/charref Jinja2定界符 : 语句: {% ... %} 表达式: {{ ... }} 注释: {# ... #} 注 :适度使用模板,仅放和输出控制有关的逻辑操作。 补充 : ren

    2024年02月11日
    浏览(38)
  • 玄子Share-自然语言编程(NLP)_Java开发小白向 ChatGPT 提问的最佳模板

    以下内容均为 ChatGPT 回答 玄子: 我向你提问时,问题描述精确的重要性 ChatGPT 3.5 问题描述的精确性非常重要,因为它可以让回答者更好地理解您的问题,并且更容易提供准确和有用的解决方案。如果问题描述不够清晰或不够详细,回答者可能会误解您的问题或者理解不到位

    2023年04月09日
    浏览(45)
  • WPF 入门笔记 - 03 - 样式基础及模板

    🍟 程序的本质 - 数据结构 + 算法 🍟 本篇为学习李应保老师所著的《WPF专业编程指南》并搭配 WPF 开发圣经《WPF编程宝典第4版》以及痕迹大佬《WPF入门基础教程系列》文章所作笔记,对应《WPF专业编程指南》第 9-10 章之间内容,主要概述 WPF 中关于样式及模板部分的梳理及应

    2024年02月08日
    浏览(41)
  • 32 - 个人博客项目-03-公共模板-base.html

    新建公共模板: templates / base.html         (1). 继承bootstrap父级模板         (2). 标题         (3). css         (4). 导航栏         (5). 内容

    2024年02月10日
    浏览(41)
  • 【JSON2WEB】03 go的模板包html/template的使用

    Go text/template 是 Go 语言标准库中的一个模板引擎,用于生成文本输出。它使用类似于 HTML 的模板语言,可以将数据和模板结合起来,生成最终的文本输出。 Go html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容。 它提供了和text/template包相同的接口

    2024年01月25日
    浏览(46)
  • 贪心算法part03算法

    ● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果 https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/description/ https://leetcode.cn/problems/gas-station/description/ https://leetcode.cn/problems/candy/description/

    2024年01月18日
    浏览(44)
  • 【网站项目】167校园失物招领小程序

    🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹 赠送计算机毕业设计600个选题excel文件,帮助大学选题。 赠送开题报告模板,帮助书写开题报告。 作者完整代码目录供你选择: 《Springboo

    2024年02月22日
    浏览(34)
  • 167. 两数之和 II - 输入有序数组

      给你一个下标从  1  开始的整数数组  numbers  ,该数组已按   非递减顺序排列   ,请你从数组中找出满足相加之和等于目标数  target  的两个数。如果设这两个数分别是  numbers[index1]  和  numbers[index2]  ,则  1 = index1 index2 = numbers.length  。 以长度为 2 的整数数组  [i

    2024年02月16日
    浏览(39)
  • R语言03-R语言中的矩阵

    在R语言中,矩阵(Matrix)是一个二维的数据结构,由行和列组成,其中所有元素必须具有相同的数据类型。矩阵可以用于存储数值型数据,常用于线性代数运算、统计计算以及数据处理等领域。

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包