gpt4 book ai didi

c++ - 嵌套结构的值初始化无法正常工作

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:12 25 4
gpt4 key购买 nike

我有这个结构定义:

struct inner
{
int i;
std::string str;
};

struct outer
{
inner member[32];
};

现在我想创建一个值初始化的outer实例,所以我写

outer o = {};

对于 GCC,这工作得很好:所有 inner.i 都归零并且所有 inner.str 都是空的。但是在 VS2013 上,只有 inner.str 是空的;所有 inner.i 都包含垃圾,即未正确初始化。

没有 std::string 成员,inner.i 的零初始化与 VS2013 一起工作。

标准对此有何规定?我一直假设 {} 通过清零或调用默认构造函数来初始化所有内容。我错了还是这是 VS2013 中的一个非常严重的错误?

最佳答案

这就是aggregate initialization :

If the number of initializer clauses is less than the number of members or initializer list is completely empty, the remaining members are initialized by their default initializers, if provided in the class definition, and otherwise (since C++14) by empty lists, which performs value-initialization.

值初始化意味着 member 的每个元素都被值初始化,这反过来意味着 i 应该为零。

所以是的,这是一个 VS2013 错误。

关于c++ - 嵌套结构的值初始化无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com