函数模板的概念和意义

问题

C++ 中有几种交换变量的方法?

交换变量的方法

定义宏代码块

  • 优点:代码复用,适合所有类型
  • 缺点:编译器不知道宏的存在,缺少类型检查

定义函数

  • 优点:真正的函数调用,编译器对类型进行检查
  • 缺点:根据类型重复定义函数,无法代码复用

新的需求

C++ 中有没有解决方案集合两种方法的优点?

泛型编程的概念

不考虑具体数据类型的编程方式

Swap 泛型写法中的 T 不是一个具体的数据类型,而是泛指任意的数据类型

C++ 中泛型编程

函数模板

  • 一种特殊的函数可用不同类型进行调用
  • 看起来和普通函数很相似,区别是类型可被参数化

函数模板的语法规则

template 关键字用于声明开始进行泛型编程

typename 关键字用于声明泛指类型

函数模板的使用

自动类型推导调用

具体类型显示调用

小结

函数模板是泛型编程在 C++ 中的应用方式之一

函数模板能够根据实参对参数类型进行推导

函数模板支持显示的指定参数类型

函数模板是 C++ 中重要的代码复用方式

相关推荐
李匠20241 小时前
C++负载均衡远程调用学习之基础TCP服务
c++·学习
Berserker_D1 小时前
【C/C++】头文件防卫式宏
c语言·开发语言·c++
绒绒毛毛雨1 小时前
将infinigen功能集成到UE5--在ue里面写插件(python和c++)
c++·python·ue5
海码0072 小时前
【Hot 100】 148. 排序链表
数据结构·c++·链表·排序算法·hot100
余弦的倒数2 小时前
C++的vector中emplace_back() 与 push_back() 的区别
开发语言·c++
鱼糕权八郎 -2 小时前
LeetCode392_判断子序列
c++·leetcode
到底怎么取名字不会重复2 小时前
Day16(贪心算法)——LeetCode45.跳跃游戏II&763.划分字母区间
c++·算法·leetcode·游戏·贪心算法
染指11102 小时前
18.第二阶段x64游戏实战-MFC列表框
汇编·c++·windows·游戏·游戏逆向·x64dbg
enyp803 小时前
Qt文本文件读写方法详解
开发语言·c++·算法
OG one.Z4 小时前
文件读取操作
c++·学习·文件读取