C++ 深度解析教程(十六)函数模板的概念和意义、深入理解函数模板、类模板的概念和意义、类模板深度剖析、数组类模板、智能指针类模板、单例类模板

五十六、函数模板的概念和意义

1、发散性问题

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

2、交换变量的方法

定义宏代码块 VS 定义函数

3、编程实验:变量的交换

4、交换变量的方法

  • 定义宏代码块
    • 优点:代码复用,适合所有的类型
    • 缺点:编译器不知道宏的存在,缺少类型检查
  • 定义函数
    • 优点:真正的函数调用,编译器对类型进行检查
    • 缺点:根据类型重复定义函数,无法代码复用

5、新的需求

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

6、泛型编程

  • 泛型编程的概念
    • 不考虑具体数据类型的编程方式

对于Swap函数可以考虑下面的泛型写法

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

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

7、函数模板

  • 函数模板的语法规则
    • template关键字用于声明开始进行泛型编程
    • typename关键字用于声明泛指类型

  • 函数模板的使用
    • 自动类型推导调用
    • 具体类型显示调用

8、编程实验:函数模板使用初探

9、小结

  • 函数模板是泛型编程在C++中的应用方式之一
  • 函数模板能够根据实参对参数类型进行推导
  • 函数模板支持显示的指定参数类型
  • 函数模板是C++中重要的代码复用方式

五十七、深入理解函数模板

1、函数模板

  • 函数模板深入理解
    • 编译器从函数模板通过具体类型产生不同的函数
    • 编译器会对函数模板进行两次编译
      • 对模板代码本身进行编译
      • 对参数替换后的代码进行编译
  • 注意事项
    • 函数模板本身不允许隐式类型转换
      • 自动推导类型时,必须严格匹配
      • 显示类型指定时,能够进行隐式类型转换

2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值