【发布时间】:2012-10-23 16:14:07
【问题描述】:
这对我来说似乎很简单,但实际上我很难找到任何明确说明这一点的内容。
std::string stringArray[3] 不 是否像SomeType typeArray[3] 那样创建std::string 对象的数组?实际数量无关紧要;我随便挑了3个。
在 Visual Studio 2010 调试器中,它似乎创建了单个字符串,而不是字符串数组。为什么?
猜想:它是调用默认的std::string 构造函数,然后调用索引3 的未使用访问吗?如果是这样,为什么这不会导致空字符串出现越界异常?
这是否与重载[] 运算符有关?
有很多方法可以编写相同的代码,而无需专门使用 std::string 数组而不会出现问题,但是这种行为的解释/理由是什么?这对我来说似乎违反直觉。
编辑:我发现了这个线程 std::string Array Element Access,其中答案上的 cmets 似乎观察到相同的行为。
【问题讨论】:
-
是什么让你相信它创建了一个字符串?
-
因为确实如此。通过代码调试并检查输出,它是一个字符串。
-
为什么投反对票?我准确地解释了我所观察到的。我首先研究了这个话题。我解释了我可能的解释。
-
如果您向我们提供可能发生此行为的最少示例代码,以及它的实际输出和您期望它输出的内容,将会很有帮助。
-
你没有解释你在观察什么(直到你刚才的评论)。您说它似乎创建了一个对象,但没有说明您为什么这么认为。由于它没有创建单个对象,因此您一定是误解了某些内容,但您没有提供足够的信息来猜测是什么。
标签: c++ arrays visual-studio-2010 stdstring declare