c++ - 在实例变量名称旁边使用方括号如何在 C++ 中工作?
问题描述
基本上我有这个代码:
============================
啊
class A {
int state = -1;
public:
void print();
void set(int i);
};
============================
A.CPP
void A::print() {
cout<<state<<endl;
}
void A::set(int i) {
state = i;
}
============================
主要的
int main() {
A a[2];
a[0].set(1);
a[1].set(2);
a[0].print();
a[1].print();
a[2].print();
a[3].print();
return 0;
}
这就是控制台中显示的内容:
1
2
1542598400
1919717043
如果我以这种方式更改主要内容:
int main() {
A a[1]; // <---- CHANGE
a[0].set(1);
a[1].set(2);
a[0].print();
a[1].print();
a[2].print();
a[3].print();
return 0;
}
这显示:
*** stack smashing detected ***: <unknown> terminated
1
2
1054043105
-2010162576
我不明白发生了什么