2017-03-24 93 views
-4

我似乎没有得到答案是b而不是d。我知道它必须做一些变量b被声明为一个静态变量。但是这些变量究竟发生了什么?提前致谢。C++静态变量没有给出正确的输出

考虑下面的代码:

class Numbers { 
    private: 
     int a; 
     static int b; 

    public: 
     Numbers(int x) : a(x) { b = x; } 
     void incA() { a++; } 
     void incB() { b++; } 
     int getA() { return a; } 
     int getB() { return b; } 
    }; 

    int main() { 
    Numbers n1(1); 
    Numbers n2(2); 
    n1.incA(); 
    n1.incB(); 
    n2.incA(); 
    n2.incB(); 
    cout << n1.getA() << "," << n1.getB() << endl; 
    return 0; 
    } 

什么是从上面的程序的输出? 的(a)2,2-(B)2,4-(C)2,5(d)2,3-

+1

这是考试或面试问题?这不是你可以尝试和调试的东西吗?所示的程序甚至不会构建*所有答案都是错误的。 –

+0

静态变量在类对象之间共享。再次仔细阅读代码。 – belln

回答

-2

回答为b:2,4

static int b跨多个 '数字' 对象共享。

您还需要在源文件中的一个来定义它像以下: int Numbers::b;