当前位置 博文首页 > DL_fan的博客:C++模板的一些基础知识
可看出就是将函数返回类型和形参类型去掉。
1.代码1
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <map>
#include <fstream>
using namespace std;
template<typename T>
void swap_(T& a, T& b ){
T temp = a;
a = b;
b = temp;
}
int main()
{
//1.自动类型推导 必须要一致的数据类型才可用
int a1 = 10, b1 = 20;
cout<<a1<<" "<<b1<<endl;
swap_(a1, b1);
cout<<a1<<" "<<b1<<endl;
float a2 = 10.01, b2 = 20.55;
cout<<a2<<" "<<b2<<endl;
swap_(a2, b2);
cout<<a2<<" "<<b2<<endl;
//2.显示指定类型
swap_<int>(a1, b1);
cout<<a1<<" "<<b1<<endl;
swap_<float>(a2, b2);
cout<<a2<<" "<<b2<<endl;
return 0;
}
有两种使用方式,一个是自动类型推导(必须要一致的数据类型才可用),一个是显示指定类型。
2.代码2
将类型作为参数,用template修饰函数模板,解决不同类型函数但实现逻辑一样的问题
#include <iostream>
using namespace std;
template <typename T>//函数模板
void display(T a)
{
cout<<"a:"<<a<<endl;
cout<<"======="<<endl;
}
template <typename T,typename S>//函数模板
void display(T t, S s)
{
cout<<"t:"<<t<<endl;
cout<<"s:"<<s<<endl;
cout<<"======="<<endl;
}
template <typename T,int KSize>//函数模板
void display(T a)
{
for (int i=0;i<KSize;i++)
{
cout<<"a:"<<a<<endl;
}
}
int main()
{
display<int>(10);//模板函数
display<double>(10.89);//模板函数
display<int,float>(11,12.11);//模板函数
display<int, 5>(11);
return 0;
}