template函数

来源:互联网 发布:大数据hadoop指令 编辑:程序博客网 时间:2024/06/06 03:07
#include "stdafx.h"#include <iostream>  #include <string>  using namespace std;  template<class T, int N> T sum(T b,T e, T init=T()){char chars[N];cout<<"N: "<<N<<endl;init=b+e;return init;}template<class T> T sum(T b,T e, T init=T()){cout<<"T sum(T b,T e, T init=T())"<<endl;init=b+e;return init;}int sum(int b,int e, int init=int()){cout<<"int sum(int b,int e, int init=int())"<<endl;init=b+e;return init;}int main(){string str=string();int x;x=10;string a[]={"a","b","e"};int b[]={1,2,3};//cout<<sum<string,x>(a[0],a[1],a[2])<<endl;//error C2971: “sum”: 模板参数“N”: “x”: 局部变量不能用作非类型参数cout<<sum<string,10>(a[0],a[1],a[2])<<endl;cout<<sum<int,100>(b[0],b[1],b[2])<<endl;cout<<sum(a[0],a[1],a[2])<<endl;cout<<sum(b[0],b[1],b[2])<<endl;cout<<sum<string>(a[0],a[1],a[2])<<endl;cout<<sum(b[0],b[1])<<endl;getchar();}

输出结果:

N: 10
ab
N: 100
3
T sum(T b,T e, T init=T())
ab
int sum(int b,int e, int init=int())
3
T sum(T b,T e, T init=T())
ab
int sum(int b,int e, int init=int())
3


函数模板不能够带默认参数。

函数模板可以不用指明参数值。

这里还有一个有趣的地方就是init形参=T()。

无类型模板参数不能为变量。必须是一个编译时就已知的。

string str=string();
C++中,这种初始化的方法都差点忘了。

#include "stdafx.h"#include <iostream>  #include <string>  using namespace std;  template<class T, int N> T sum(T b,T e, T init=T()){char chars[N];cout<<"N: "<<N<<endl;init=b+e;return init;}template<class T> T sum(T b,T e, T init=T()){cout<<"T sum(T b,T e, T init=T())"<<endl;init=b+e;return init;}int sum(int b,int e, int init=int()){cout<<"int sum(int b,int e, int init=int())"<<endl;init=b+e;return init;}int main(){string str=string();int x;x=10;string a[]={"a","b","e"};int b[]={1,2,3};//cout<<sum<string,x>(a[0],a[1],a[2])<<endl;//error C2971: “sum”: 模板参数“N”: “x”: 局部变量不能用作非类型参数cout<<sum<string,10>(a[0],a[1],a[2])<<endl;cout<<sum<int,100>(b[0],b[1],b[2])<<endl;cout<<sum(a[0],a[1],a[2])<<endl;cout<<sum(b[0],b[1],b[2])<<endl;cout<<sum<string>(a[0],a[1],a[2])<<endl;cout<<sum(b[0],b[1])<<endl;getchar();}

输出结果:

N: 10
ab
N: 100
3
T sum(T b,T e, T init=T())
ab
int sum(int b,int e, int init=int())
3
T sum(T b,T e, T init=T())
ab
int sum(int b,int e, int init=int())
3


函数模板不能够带默认参数。

函数模板可以不用指明参数值。

这里还有一个有趣的地方就是init形参=T()。

无类型模板参数不能为变量。必须是一个编译时就已知的。

string str=string();
C++中,这种初始化的方法都差点忘了。

原创粉丝点击