如果你问为什么我会把它变成
,我已经通过添加第一个参数来使这个代码添加数字因为我将使用它来解决我的赋值中的问题,如果数字来自相同的数据类型(例如int和int),但是如果来自不同的数据类型(如double和int)它不再有效,则代码可以正常工作好像m上的静态关键字不存在
#include<iostream>
using namespace std;
template <class first, class seconde>
void total (first a, seconde b){
static first m =0 ;
static seconde f=0;
++f;
if(b==m){
m+=a;
cout<<m<<endl;
}
m+=a;
}
void main(){
total(2,2);
total(1,2);
system("pause");
}
我需要知道,当使用int和double而iam使用模板
时,它不适用于不同的数据类型答案 0 :(得分:3)
使用模板,不同的模板参数可以创建完全不同且无关的功能。
请记住,对于first
和seconde
的每个不同组合,您将拥有不同的static
变量。每个不同的模板参数组合都会生成一个新函数,因此调用
total(1, 2) // calls total<int, int>
和
total(1, 1.3) // calls total<int, double> , a totally different function
不会访问相同的静态变量。