这对我来说似乎很简单,但实际上我很难找到任何明确说明这一点的东西。
不创建对象数组,std::string stringArray[3]
那样会吗?实际数量无关紧要;我随便挑了3个。std::string
SomeType typeArray[3]
在 Visual Studio 2010 调试器中,它似乎创建了单个字符串,而不是字符串数组。为什么?
疯狂猜测:它是调用默认std::string
构造函数,然后调用索引 3 的未使用访问吗?如果是这样,为什么这不会导致空字符串出现越界异常?
这与[]
运算符重载有关吗?
有很多方法可以编写相同的代码,而无需专门使用std::string
没有问题的数组,但是这种行为的解释/理由是什么?这对我来说似乎违反直觉。
编辑:我发现这个线程std::string Array Element Access在其中对答案的评论似乎观察到相同的行为。