【问题标题】:C++ static variables not giving the correct outputC++ 静态变量没有给出正确的输出
【发布时间】:2017-03-24 07:43:08
【问题描述】:

我似乎不明白答案是 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

【问题讨论】:

  • 这是考试题还是面试题?这不是您可以尝试和调试的东西吗?而且显示的程序甚至不会构建,所以所有答案都是错误的。
  • 类对象之间共享一个静态变量。牢记这一点,再次通读代码。

标签: c++ static


【解决方案1】:

答案是 b:2,4

static int b 被多个“数字”对象共享。

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 2022-06-10
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多