和java泛型类似

逻辑相同,类型不同
模板函数template<class T>
模板声明必须紧跟着函数,只能对一个函数起作用

编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。

调用时
1.自动类型推导,必须有参数类型才可以推导(不能是两个不同类型来代替T),既不可以做隐式转换
2.显示指定类型

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
template<class T> // T是通用类型,也可使用template<typename T>来声明
void mySwap(T &a, T &b)
{T tmp = a;a = b;b = tmp;
}void test()
{int a = 10;int b = 20;char c1 = 'c';//    mySwapInt(a, b);//1 自动类型推导,必须有参数类型才可以推导//mySwap(a, c1); 推导不出来T,所以不能运行mySwap(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;//2 显示指定类型mySwap<int>(a, b);cout << "a = " << a << endl;cout << "b = " << b << endl;double c = 3.14;double d = 1.1;mySwap(c, d);cout << "c = " << c << endl;cout << "d = " << d << endl;
}int main() {test();system("pause");return EXIT_SUCCESS;
}

通过具体化自定义数据类型(模板重载),解决某些类型不能共用的问题.
具体化语法template<> 返回值

C++ 泛型编程-函数模板相关推荐

  1. 【C++要笑着学】泛型编程 | 函数模板 | 函数模板实例化 | 类模板

      ​​​​​​         

  2. C++ 泛型编程(一):模板基础:函数模板、类模板、模板推演成函数的机制、模板实例化、模板匹配规则

    文章目录 泛型编程 函数模板 函数模板实例化 隐式实例化 显式实例化 函数模板的匹配规则 类模板 类模板的实例化 泛型编程 泛型编程旨在削减重复工作,如: 将一个函数多次重载不如将他写成泛型. voi ...

  3. 【C++ 语言】面向对象 ( 模板编程 | 函数模板 | 类模板 )

    文章目录 函数模板 类模板 代码示例 函数模板 1. 模板编程 : 类似于 Java 中的泛型编程 ; ① 函数模板 : 对应着 Java 中的泛型方法 ; ② 类模板 : 对应 Java 中的泛型类 ...

  4. C++11新特性之泛型编程与模板

    模板 泛型编程 函数模板 普通函数模板 成员函数模板 函数模板重载 模板函数的特化 类模板 类模板中的成员函数模板 类模板的特化与偏特化 类模板成员特化 模板 Template所代表的泛型编程是C++ ...

  5. C++模板(函数模板,类模板)的基本使用与非类型模板参数与模板的特化

    C++模板 模板初阶 泛型编程 函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 隐式实例化 显式实例化:在函数名后的<>中指定模板参数的实际类型 模板参数的匹配原则 ...

  6. Template 基础篇-函数模板

    ====================================================|| 欢迎讨论技术的可以相互加微信:windgs (请备注csdn+xx职业) ======== ...

  7. 【C++】模板-函数模板、类模板

    文章目录 泛型编程 函数模板 函数模板的原理 函数模板的实例化 模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 如果我们想要实现一个通用的交换函数,我们可以通过函数重载来实现, ...

  8. c++ swap函数头文件_C++函数模板(泛型编程)

    模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码. 模板是创建泛型类或函数的蓝图或公式.库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念. 每个容器都有一个单 ...

  9. C++ 泛型编程(一):模板基础:函数模板,类模板,模板原理,模板匹配规则

    类模板 函数模板 泛型编程 泛型编程,泛型即是指具有在多种数据类型上皆可操作的含义,其实就是能够帮助开发者编写完全一般化并可重复使用的算法,同样的工作不需要做多次,同样的算法针对不同的类型也不应该写多 ...

最新文章

  1. python容易学吗-python容易学么
  2. 【网络安全】}ofCMS代码审计
  3. 强烈推荐十大NLP主流经典项目:预训练BERT、知识图谱、智能问答、机器翻译、文本自动生成等...
  4. docker下交叉编译环境配置
  5. 【c++】简单的string类的几个基本函数
  6. 解决Error: could not open ‘……\jre7\lib\i386\jvm.cfg‘问题
  7. 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程)
  8. Java IO流学习总结一:输入输出流
  9. 聚合支付的钱先到哪?一文让你读懂什么是聚合支付
  10. 4g网络什么时候淘汰_4g网络手机。什么时候淘汰
  11. 从零搭建Hexo博客并部署腾讯云服务器(宝宝级教学)
  12. 工业协议分析1——攻防世界
  13. doucument.referrer部分安卓机型一直为空问题
  14. QAxObject保存Excel表格
  15. 极客感十足的电子胸牌 ART-Badge V2.0开发记录!
  16. 技术话题(2)实时通讯RT和同步实时通讯IRT的区别
  17. java实现最近距离
  18. 【树莓派】64G的SD卡无法使用NOOBS安装树莓派的问题
  19. 利用Echarts绘制饼状图等可视化图形
  20. Hyperspace 炫酷太空隧道穿梭屏保

热门文章

  1. c语言结构体语法分析,C语言结构体struct的语法解析
  2. 电脑键盘上每个键的作用_键盘F键有什么作用 键盘F键作用介绍【详解】
  3. C/S架构和B/S架构
  4. 微课|玩转Python轻松过二级:第3章课后习题解答4
  5. 列表元素循环移位中Python切片的妙用
  6. java invoke 泛型_如何通过java反射调用含有泛型数组参数的方法
  7. axis2 java.net.url_axis2调用.net写的webservice接口实现,指定参数名
  8. python爬虫10万信息mysql_python爬虫:爬取易迅网价格信息,并写入Mysql数据库
  9. 服务器配置织梦系统,DedeCMS织梦系统设置说明:核心设置
  10. pc控制iphone的软件_嗑技热点 | 苹果M1芯片:对PC行业的降维打击