静态变量如何用作计数器?

时间:2015-04-21 16:54:29

标签: c++

我正在阅读c ++代码。我看到一个静态变量已被用作计数器,它已在构造函数中初始化,如下所示:

 class Order{
 int Number;

public:
    Order(){
     int static i=0;
     Number=++i;
     }

   int getNumber(){
      return Number;
   }
    .
    .

因此,如果我们实例化“Order”类如下:

    Order *o1 = new Order();
    o1.getNumber();
    Order *o2 = new Order();
    o2.getNumber();
    Order *o3 = new Order();
    o3.getNumber();
    //Result :  1 ,2 ,3 

我想知道静态变量在这种情况下是如何工作的。因为每次我们实例化 Order 类时,实际上我们设置 int static i = 0; 所以我希望得到这样的结果:

1,1,1

但似乎静态变量背后的过程是不同的!那么,这个静态变量背后发生了什么以及它是如何工作的?

1 个答案:

答案 0 :(得分:3)

static类变量在该类的所有实例中都有一个实例。使用标准变量,类的每个实例都会创建该变量的实例,但是使用static变量它们共享同一个实例。如果您要打印static int i的内存地址,则无论您使用哪个Order,都会看到内存地址相同。

有人在评论中已经提到这一点,但如果其他人错过了,请在C ++中阅读staticThe static keyword and its various uses in C++

您的问题很可能被低估了,因为您可以通过搜索静态关键字而不是提问来轻松阅读静态关键字及其使用。