【问题标题】:How does static variable and how is it used as counter? [duplicate]静态变量如何以及它如何用作计数器? [复制]
【发布时间】:2015-06-28 23:44:54
【问题描述】:

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

 class Order{
 int Number;

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

   int getNumber(){
      return Number;
   }
    .
    .

因此,如果我们将“订单”类实例化如下:

    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

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

【问题讨论】:

标签: c++


【解决方案1】:

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

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

您的问题可能被否决了,因为您可以通过搜索而不是提问来轻松了解静态关键字及其用法。

【讨论】:

    猜你喜欢
    • 2018-12-23
    • 2014-07-24
    • 1970-01-01
    • 2013-06-02
    • 2015-04-04
    • 2016-03-05
    • 2015-01-24
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多