静态变量是如何定义的,它是如何用作计数器的? 我正在阅读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

静态变量是如何定义的,它是如何用作计数器的? 我正在阅读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,c++,C++,因此,如果我们实例化“Order”类,如下所示: 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 Or

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

 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

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

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

有人已经在评论中提到了这一点,但如果其他人没有注意到,请阅读C++中的
static

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

请看这里