[英]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.