一、模板
- 模板的引入:
- 模板的精神:类型参数化,即类型也是一种参数。
- template所代表的泛型编程是C++语言中的重要组成部分。C++是一门强类型语言,无法像动态语言(如python)那样,编写一段通用的逻辑,可以把任意类型的变量传进去。泛型编程弥补了这一点摆脱了类型的限制,提高了代码的可重用性。
- 模板是建立通用的与数据类型无关的算法的重要手段,可实现代码重用。
- 函数模板的定义与声明:---函数模板实参推演
- 定义:
- template<模板参数表>返回值类型 函数名(函数形参表){......}//函数体
- 模板参数主要是模板类型参数,尖括号中不能为空。模板类型参数由typename(或class)+标识符构成。表示该标识符代表一种潜在的内置或用户自定义数据类型。
- 声明:
- 函数模板的声明与函数声明不同,函数模板的声明必须含变量名。因为两者的编译过程不一样。函数模板必须先转换成模板函数,再进行编译。模板定义本身不参与编译,而是编译器模板的用户使用模板时提供的类型参数生成代码,再进行编译。这一过程成为模板的实例化。用户提供不同的类型参数就会实例化出不同的代码。
- 定义:
- 类模板的定义与声明:---类模板实例化
- 定义:
-
template<模板参数表> class 类名 { //类定义体 };//注意分号不可少 templete<模板参数表>返回类型 类名<模板参数名表>:: 成员函数名1(形参表) { ......;//成员函数定义体 }
模板参数表有两种:模板类型参数和非模板类型参数。
-
- 定义:
后续吃个饭回来补充!!!!