C++类模板和函数模板初识

  • 宏定义
  • 函数的重载:
  • 内存管理方式
    • 交互给用户管理 ----- C语言
    • GC机制,垃圾回收机制 ----- Java

 

1、模板类和模板函数

  1. 宏定义:简单的替换不安全,而且不能实现复杂的函数
  2. 函数的重载:需要重载多个版本
  3. 模板:一段程序实现能够处理不同的类型的对象,使参数的多态(使相同的逻辑代码处理不同的数据类型),是一个实现多态的工具。
    1. 分类:类模板、函数模板、成员函数模板。
  4. 函数模板
    1. 可以进行重载的
    2. 格式template <typename T1, typename T2>
    3. 实际上被编译了两次:一次是实例化之前检查函数模板是否存在语法错误;另一次是在实例化期间检查调用是否有效。
    4. 支持非类型参数(占位参数, 默认参数) template <typename T1, int num>
      • 默认参数时,可以默认值也可以在调用的时候更改传入的参数
      • 占位参数时,

    1. 调用:
      1. 显示调用:调用时用户自己指定类型
      2. 隐式调用:编译器自主选择最佳适合的函数类型
  1. 模板函数的实例化
    1. 隐式实例化 template <typename T1, typename T2>
      1. 特点:实例化多次(在每个文件都会实例)
    2. 显示实例化 template int add<int,double>(int, int);
      1. 特点:只实例化一次
  2. 类模板 (类中的成员变量类型用typename代替)
    1. 格式:template <typename T1, typename T2>
    2. 支持非类型参数(占位参数, 默认参数) template <typename T1, int num>
    3. 只可以显示地定义类对象!!!
  3. 类模板的实例化
    1. 隐式实例化 template <typename T1, typename T2>
    2. 显示实例化 template class Test<int, double>;
  4. 模板成员函数 ---- 增强成员函数的通用性
    1. 使用时机:当成员函数参数为其他的类型时,需要typename另外一个类型
    2. 实现:在要实现的地方重新template<typename X>新的类型X;
  5. 模板类的全特化和偏特化
    1. 全特化:模板符合多种类型,但是对于某种特定的类型需要作出特定的处理,则此时需要对特定的类型单独写出来一个类模板来针对该类型。
    2. 偏特化:对template中的几个类型中某一个单独的类型作出特殊处理。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值