栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

华清远见-创客学院-专业:嵌入式人工智能开发 C++ 课程(包含天猫精灵)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

华清远见-创客学院-专业:嵌入式人工智能开发 C++ 课程(包含天猫精灵)

以下文章不重要,看我名字,你懂的

template 是 c++ 适当重要的组成部分,可谓 c++语言的一大利器。在大大小小的 c++ 程序中,模板无处不在。c++ templates 作为模板学习的经典书本,向来被无数 c++学习者所推崇。第二版书本覆盖了 c++ 11 14 和 17 标准,值得程序猿们精读学习,特此收拾学习笔记,将每一部分自认为较为重要的部分逐条陈列,并对少量错误代码进行修改

一、函数模板

1.1 函数模板初探

1.模板实例化时,模板实参有必要支撑模板中类型对应的所有运算符操作。

2.模板编译时会进行两阶段查看

a.模板界说时,进行和类型参数无关的查看,如未界说的符号等。

b.模板实例化时,进行类型参数相关的查看。

3.根据两阶段查看,模板在实例化时要看到完整界说,最简单的方法是将完成放在头文件中。

1.2 模板参数揣度

1.函数模板的模板参数能够经过传递的函数参数进行揣度。

2.函数揣度时会用到参数类型转化,规矩如下:

a.假如函数参数是按引证传递的,任何类型转化都不被答应。(此处有疑问,const 转化还是能够的)

b.假如函数参数是按值传递的,能够进行退化(decay)转化:const(指针或者引证只要顶层 const 能够被疏忽) 和 volatile 被疏忽;引证变为非引证;数组和函数变为对应指针类型。

3.上文的最终一句调用,类型揣度具有二义性,无法正确实例化。能够经过以下方法处理

a.类型转化:

b.显式指定模板实参:

4.函数模板无法经过默许参数揣度模板参数。假如函数模板只要一个函数参数,且函数参数供给了默许值的情况,应该为模板类型参数 T 也供给和函数参数默许值匹配的默许类型。

1.3 多模板参数

1.当函数回来类型不能或不便由函数参数类型直接揣度时,能够在函数模版中新增模板参赛指定回来类型。

2.c++11 之后,能够经过 auto + decltype +尾后回来类型 揣度函数模板回来类型。当函数参数为引证类型时,回来类型应该为非引证。而decltype 会保留引证,因而还需经过 decay 进行类型退化。

3.c++14 之后,能够经过 auto 直接揣度函数模板回来类型,条件是函数内部的多个回来语句揣度出的回来类型要一致。auto 会主动对类型进行 decay。

4.c++11 之后,能够经过 common_type 回来多个模版类型参赛的公共类型,common_type 回来的类型也是 decay 的。

1.4 默许模板参数

1.能够给模板参数指定默许值。

1.5 函数模板重载

1.一个非模板函数能够和同名的函数模板共存,并且函数模板可实例化为和非模板函数具有相同类型参数的函数。函数调用时,若匹配度相同,将优先调用非模板函数。但若显式指定模板列表,则优先调用函数模板。

2.函数模板不能够进行类型主动转化,非模板函数能够。

3.调用函数模板时,有必要保证函数模板现已界说。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号