繁体   English   中英

C ++中的隐式静态变量?

[英]Implicit static variable in C++?

我有一个对象SeatSelection。 在此对象中,我声明了一个整数数组,如下所示

int *rows[25];

我的SeatSelection构造函数按以下方式初始化rows变量:

SeatSelection::SeatSelection(int start, int range){
  this->range = range;
  this->start = start;

  for(int i = 0; i < range; i++){
    rows[i] = new int[10];

  for(int j = 0; j < 10; j++)
    rows[i][j] = (j+1);
  }
}

从理论上讲,我现在应该有一个大小为10的整数数组,对吗?

在我的司机课上

我声明了两个SeatSelection对象,它们都具有不同的参数:

SeatSelection premium(1,5);
SeatSelection regular(6, 15);

premium应有5行,每行10个席位= 50个席位。

regular应该有15行,每行10个座位= 150个座位。

通过一些调试,我发现这两个不同的SeatSelection对象共享相同的rows指针/数组。 我没有将此变量声明为静态的。 为什么会这样呢?

要为每个类实例获取单独的rows变量,仅使变量“非static ”是不够的。

您必须使其成为类成员,才能按实例存储它。

其他非静态变量的存储持续时间由其范围确定。 非静态名称空间成员(包括全局名称空间)变量具有整个程序的一个副本。 非静态局部变量在每次调用该函数时都有一个副本。

看起来int * row [25]不属于SeatSelection类。 您可能在本地/全局声明了row []数组,并且每个SeatSelection对象都使用相同的空间。 高级对象写入row []内存后,常规对象会覆盖它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM