Skip to content

Files

Latest commit

Feb 21, 2022
fd9a62b · Feb 21, 2022

History

History

000_1_14-模板template

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Feb 21, 2022
Feb 18, 2022
Feb 21, 2022
Feb 21, 2022
Feb 21, 2022
Feb 21, 2022
Feb 21, 2022
Feb 21, 2022

[toc]

C++ 模板 template

  • 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码;
  • 模板是创建泛型类或者函数的蓝图;
  • 库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念;
  • 每一个容器都有一个单一的定义,比如vector<>,我们可以定义许多不同类型的向量,比如vectorvector
  • 你可以使用模板来定义函数和类;

1:函数模板

1.1 definition

template <typename type> ret-type func-name(){
    // 函数body
}

// type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。

1.2 instance

2:类模板

2.1 definition

template <class type> class class-name{
    //
}

// 在这里,type 是占位符类型名称,可以在类被实例化的时候进行指定。您可以使用一个逗号分隔的列表来定义多个泛型数据类型;

2.2 instance

2.3 类模板分文件编写

解决:

解决方式 1:直接包含.cpp 源文件 解决方式 2:将.h 和.cpp 中的内容写到一起,将后缀名改为.hpp 文件(比较多)

3: 总结

3.1 函数模板作用

建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表

总结: 函数模板利用关键字 template 使用函数模板有两种方式:自动类型推导、显示指定类型 模板的目的是为了提高复用性,将类型参数化

3.2 类模板与函数模板区别

类模板没有自动类型推导的使用方式 类模板在模板参数列表中可以有默认参数