VC++ 2010似乎只在固定数组中分配一个std :: string

taz*_*taz 1 c++ arrays stdstring visual-studio-2010 declare

这对我来说似乎很简单,但我实际上找不到任何明确说明这一点的麻烦.

std::string stringArray[3] 不是会创建一个std::string对象数组SomeType typeArray[3]?实际数字无关紧要; 我随便挑了3个.

在Visual Studio 2010调试器中,它似乎创建单个字符串而不是字符串数组.为什么?

狂野猜测:它是调用默认std::string构造函数,然后调用未使用的索引3访问吗?如果是这样,为什么不在空字符串上引起越界异常呢?

这是否与重载[]运算符有关?

有很多方法可以编写相同的东西,而无需专门使用std::string没有问题的数组,但这种行为的解释/理由是什么?这对我来说似乎违反直觉.

编辑:我发现这个线程std :: string数组元素访问,其中答案的注释似乎观察到相同的行为.

Dan*_*Dan 6

Visual Studio的调试器通常只显示数组或指针指向的第一个东西.你将不得不使用stringArray[1] stringArray[2]等来看到比这更远的地方.