模板和静态变量

时间:2013-12-04 15:25:56

标签: c++ object

如果你问为什么我会把它变成

,我已经通过添加第一个参数来使这个代码添加数字

因为我将使用它来解决我的赋值中的问题,如果数字来自相同的数据类型(例如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使用模板

时,它不适用于不同的数据类型

1 个答案:

答案 0 :(得分:3)

使用模板,不同的模板参数可以创建完全不同且无关的功能。

请记住,对于firstseconde的每个不同组合,您将拥有不同的static变量。每个不同的模板参数组合都会生成一个新函数,因此调用

total(1, 2) // calls total<int, int>

total(1, 1.3) // calls total<int, double> , a totally different function

不会访问相同的静态变量。