我分别有一个类和一个结构,其成员变量类型为 std::array<char, 100>
称为字符数组。我想明智地初始化这个数组。使用哪些值来初始化数组是明智的,执行此操作的最佳方法是什么?
我想我可以使用 std::fill()
在构造函数中,但这是我真正应该这样做的方式吗?我的意思是因为初始化还是赋值?
谢谢。
最佳答案
一个简单的解决方案是将数组值初始化为类型的默认值。举个例子
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
关于c++ - 在 C++ 中明智地初始化 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730837/