类的数据结构
class test { private: int a[10]; int b[10]; };
在实际项目中使用上面类似数据排列时,数组a中数据老是会莫名改变,在每个对a有操作的地方打断点,就没发现过会运行改变功能,跟了好久这个问题,最后试过把a改const,这样a中数据不会串了,但是还是想知道是哪儿导致它数据改变的。
于是猜测可能是地址上引用发生改变,看看到b离a近又隐约记着书上写着类中声明数据地址是连续的,就大胆猜测是对b的操作导致a数据串掉,现在就同样方法用在了b上,果然给发现了问题,有条语句执行是下面这样
b[-1] = ..
运行到这里就明白了问题所在,这是老生常谈的数组越界,这种还特隐蔽,写了这么久代码,发生在越界这个问题上不是一次两次了,相信以后还会遇到同样问题,只能说写代码的时候注意判断界限吧!