函数模板的概念和意义

问题

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

交换变量的方法

定义宏代码块

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

定义函数

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

新的需求

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

泛型编程的概念

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

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

C++ 中泛型编程

函数模板

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

函数模板的语法规则

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

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

函数模板的使用

自动类型推导调用

具体类型显示调用

小结

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

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

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

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

相关推荐
doll ~CJ10 小时前
基于QVTKOpenGLNativeWidget的三维点云可视化实现
c++·qt·软件开发·三维点云可视化
42fourtytoo11 小时前
天津大学智算2026预推免机试第二批题目及代码c++
开发语言·c++·面试
子豪-中国机器人12 小时前
枚举算法和排序算法能力测试
开发语言·c++·算法
1白天的黑夜112 小时前
栈-844.比较含退格的字符串-力扣(LeetCode)
c++·leetcode·
林夕忆梦_猫13 小时前
初识C++
开发语言·c++
chxin1401613 小时前
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 四(91-)
c++·opencv·计算机视觉
lightqjx13 小时前
【C++】string类 模拟实现
java·开发语言·c++
青草地溪水旁13 小时前
C/C++ 标准库中的 `strspn` 函数
c语言·c++
minji...13 小时前
C++ list的模拟实现
开发语言·c++·list
零点零一15 小时前
`vcpkg` 微软开源的 C/C++ 包管理工具的使用和安装使用spdlog
c语言·c++·microsoft