函数模板的概念和意义

问题

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

交换变量的方法

定义宏代码块

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

定义函数

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

新的需求

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

泛型编程的概念

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

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

C++ 中泛型编程

函数模板

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

函数模板的语法规则

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

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

函数模板的使用

自动类型推导调用

具体类型显示调用

小结

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

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

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

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

相关推荐
Cinema KI1 小时前
吃透C++继承:不止是代码复用,更是面向对象设计的底层思维
c++
Dream it possible!4 小时前
LeetCode 面试经典 150_二叉搜索树_二叉搜索树中第 K 小的元素(86_230_C++_中等)
c++·leetcode·面试
Bona Sun5 小时前
单片机手搓掌上游戏机(十四)—pico运行fc模拟器之电路连接
c语言·c++·单片机·游戏机
oioihoii6 小时前
性能提升11.4%!C++ Vector的reserve()方法让我大吃一惊
开发语言·c++
小狗爱吃黄桃罐头6 小时前
《C++ Primer Plus》模板类 Template 课本实验
c++
码力码力我爱你8 小时前
Harmony OS C++实战
开发语言·c++
Vect__8 小时前
别再只懂 C++98!C++11 这7个核心特性,直接拉开你与普通开发者的差距
c++
想唱rap9 小时前
C++ map和set
linux·运维·服务器·开发语言·c++·算法
小欣加油10 小时前
leetcode 1018 可被5整除的二进制前缀
数据结构·c++·算法·leetcode·职场和发展
玖剹11 小时前
递归练习题(四)
c语言·数据结构·c++·算法·leetcode·深度优先·深度优先遍历