一、定义模板 1、函数模板 模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或多个模板参数的列表,用<>括起来。在模板定义中,模板参数列表不能为空。模板参数表示在类或函数定义中用到的类型或值。当使用模板时,我们(隐式地或显式地)指定模板实参,将其绑定到模板参数上。 ...
分类:
其他好文 时间:
2019-01-30 14:16:17
阅读次数:
115
c++ forward关键字 forward的由来:模板函数中的推导类型,作为另一函数的参数时,不管实参是什么类型,作为另一个参数的实参时,都变成了左值。因为C++里规定函数的形参就是左值,不过调用侧的实参是否是右值。所以,调用的另一个函数的形参即使用T&& arg来声明,传过去的也是左值,编译不过 ...
分类:
编程语言 时间:
2019-01-24 15:34:48
阅读次数:
237
一、模板 模板的引入: 模板的精神:类型参数化,即类型也是一种参数。 template所代表的泛型编程是C++语言中的重要组成部分。C++是一门强类型语言,无法像动态语言(如python)那样,编写一段通用的逻辑,可以把任意类型的变量传进去。泛型编程弥补了这一点摆脱了类型的限制,提高了代码的可重用性 ...
分类:
编程语言 时间:
2019-01-13 19:04:45
阅读次数:
170
2019年51CTO学院发布课程回顾总结2018年期间共发布五套教程:bat批处理自动发邮件、bat批处理自动数据备份、oracle数据库安装、EXCEL库存库位管理模板2017年共发布7套课程:bat批处理之文件管理、虚拟机工作站、EXCEL功能及函数2016年加入51CTO学院发布了7套课程:EXCEL进销存管理模板、IF函数、VlOOKUP函数、字符串截取函数、bartender9.4软件应
分类:
其他好文 时间:
2019-01-01 15:26:21
阅读次数:
189
0.目录 1. "函数模板" 1.1 "函数模板与泛型编程" 1.2 "多参数函数模板" 1.3 "函数重载遇上函数模板" 2. "类模板" 2.1 "类模板" 2.2 "多参数类模板与特化" 2.3 "特化的深度分析" 3. "小结" 1.函数模板 1.1 函数模板与泛型编程 C++中有几种交换变 ...
分类:
编程语言 时间:
2018-12-09 21:04:21
阅读次数:
223
前面的系列我们讲了自定义new和delete操作,其中针对deleteArray的问题还有需要优化的地方。我们这次就针对POD类型进行一次优化。 下面的代码是针对POD类型的模板函数实现,分别为NewArrayPOD和DeleteArrayPOD: template <typename T, cla ...
分类:
编程语言 时间:
2018-12-09 18:43:33
阅读次数:
130
一、为什么要有模板? 将类型参数化,可以实现算法与类型的分离,编写针对类型更加抽象的函数或者类。 二、函数模板 通用定义: template<typename 类型形参1, ...> 返回类型 函数模板名 (形参表) { ... } 特化定义: template<> 返回类型 函数模板名<类型实参1 ...
分类:
编程语言 时间:
2018-11-27 20:51:42
阅读次数:
150
模板类中,或模板函数中,若限定模板参数为数值类型,可以使用如下方式进行判断. 以上代码节选自muduo. 其中主要推断方式是通过调用std::is_arithmetic<T>. 若 T 为算术类型(即整数类型或浮点类型)或其修饰类型(添加注入const等),则提供等于 true 的成员常量 valu ...
分类:
编程语言 时间:
2018-11-03 21:55:26
阅读次数:
198
函数模板特化 函数模板特化: 特化的声明必须与对应的模板相匹配,当调用cmp函数时,传给他两个const string类型的参数,编译器调用特化版本,特化函数参数固定为const string类型,当调用其他类型(包括string)时,调用泛化版本 1.声明特化模板 函数特化模板可以声明而无需定义 ...
分类:
其他好文 时间:
2018-10-13 11:36:35
阅读次数:
214