在C ++中合理地使用init char数组?

时间:2016-01-11 20:52:30

标签: c++ arrays initialization

我有一个类,分别是一个结构,其成员变量类型为std::array<char, 100>,名为charArray。我想明智地初始化这个阵列。使用init初始化哪些值是明智的,最好的方法是什么?

我想我可以在构造函数中使用std::fill()但这是我应该这样做的方式吗?我的意思是因为初始化与分配?

感谢。

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是将数组初始化为类型的默认值。举个例子

struct Foo
{
    std::array<int, 10> bar;
    Foo() : bar({}) {}
};

此处bar将被初始化为全0。您可以将其与

进行比较
struct Bar
{
    std::array<int, 10> baz;
};

默认初始化baz,其元素将具有不确定的值。您可以看到所有这些与

一起使用
struct Foo
{
    std::array<int, 10> bar;
    Foo() : bar({}) {}
};

struct Bar
{
    std::array<int, 10> baz;
};


int main(){
    Foo foo;
    for (auto e : foo.bar)
        std::cout << e << " ";
    std::cout << std::endl;
    Bar bar;
    for (auto e : bar.baz)
        std::cout << e << " ";
}

可能的输出:

0 0 0 0 0 0 0 0 0 0 
-917263728 4197632 4197632 4197632 4197632 4197632 6295552 0 4197581 0 

Live Example