相关疑难解决方法(0)

std :: array的默认初始化?

使用C++ 11 std::array,我是否可以保证语法std::array<T, N> x;将默认初始化数组的所有元素?

编辑:如果没有,是否有一个语法可以在所有数组(包括零大小的数组)上工作,以将所有元素初始化为默认值?

编辑:在cppreference上,默认的构造函数描述说:

(constructor) (implicitly declared) (public member function)
default-constructs or copy-constructs every element of the array 
Run Code Online (Sandbox Code Playgroud)

所以答案可能是肯定的.但我想根据标准或未来标准确定这一点.

initialization default-constructor c++11 stdarray

90
推荐指数
4
解决办法
6万
查看次数

将 std::array&lt;POD, N&gt; 放在联合中是否安全?

我有一个这样声明的工会:

union
{
    int all[4];
    struct
    {
        int a, b, c, d;
    };
};
Run Code Online (Sandbox Code Playgroud)

该点all阵列是单纯为了遍历所有4场简单。

为了使它更简单,我想用一个std::array<int, 4>. 那会让我接触鼻恶魔吗?

c++ arrays stl c++11

10
推荐指数
1
解决办法
1503
查看次数

如何对联盟进行零初始化?

请考虑以下代码:

struct T {
    int a;
    union {
        struct {
            int a;
        } s1;
        struct {
            char b[1024];
        } s2;
    };
};

int main() {
    T x = T();
}
Run Code Online (Sandbox Code Playgroud)

由于调用了显式构造函数,上面的代码最终将零初始化为x中的所有数据成员.

但即使未调用显式,我也希望x初始化为零.要做到这一点,一个想法是在他们的声明中初始化数据成员,这对于T :: a来说似乎没问题.但是,如何使用相同的标准对联合占用的所有内存进行零初始化?

struct T {
    int a = 0;
    union {
        struct {
            int a;
        } s1;
        struct {
            char b[1024];
        } s2;
    };
};

int main() {
    T x; // I want x to be zero-initialized
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
2
解决办法
6027
查看次数