目录
一 什么是模板?
模板是使用占位符把类或函数的参数类型进行统一定义,当实际使用模板时会根据传入的参数对占位符进行逐一替换。
泛型编程的基础,也是开发大型程序必不可少的技术。
二 如何定义模板?
模板函数定义形式:
template <typename type> ret-type func-name(parameter list)
{
// 函数的主体
}
type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。
类模板一般形式如下所示:
template <class type> class class-name {
.
.
.
}
在这里,type 是占位符类型名称,可以在类被实例化的时候进行指定。您可以使用一个逗号分隔的列表来定义多个泛型数据类型。
模板函数代码实例:
#include <iostream>
using namespace std;
//定义函数模板
template<typename T>
//这部分为函数模板申明的标准格式,其中的T可以随便叫一个其他的合法的名称
inline T sum(T a, T b) { //使用函数模板定义的类型到函数中,当实际调用时会根据实际的参数类型对占位符T进行替换。
return a + b;
}
int main() {
int SUM = sum(22, 33);
cout << SUM << endl;
return 0;
}
注意:模板的类和函数的申明与定义均放在.cpp文件中,不然找不到定义。
模板类代码实例:
//
// Created by 11010 on 2023/4/9.
//注意:模板的类和函数的申明与定义均放在.cpp文件中,不然找不到定义。
//
template<class T> //申明这一句之后,后面就可以使用这里的类型了
class templateClass {
public:
T sum(T a, T b); //定义模板函数: 计算两数之和
T area(T len,T width); //定义模板函数:计算面积
};
template<class T>
T templateClass<T>::sum(T a, T b) {
return a+b;
}
template<class T>
T templateClass<T>::area(T len, T width) {
return len*width;
}
主函数:
//使用模板类
templateClass<double> tc; //指定类型为double
//调用模板类的方法
cout<<"两数之和为:"<<tc.sum(23.56,32)<<endl;
cout<<"面积为:"<<tc.area(55.98,79.898)<<endl;
完整代码clone地址:git@gitcode.net:XiaoWang_csdn/cpp_17_template.git