C ++静态变量没有给出正确的输出

时间:2017-03-24 07:43:09

标签: c++ static

我似乎没有得到答案是b而不是d。我知道它必须对变量b声明为静态变量做些什么。但究竟是什么变量呢?提前谢谢。

请考虑以下代码:

 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 :(得分:-2)

答案是b:2,4

static int b在多个“Numbers”对象中共享。

您还需要在其中一个源文件中定义它,如下所示: int Numbers::b;