【发布时间】:2019-09-16 21:57:49
【问题描述】:
给出下面的代码是否正确,编译器应该生成Node(),它应该调用std::array<Node *, 100>(),它应该初始化所有100个指向nullptr的指针。
旁注:我知道如果我使用std::array<Node *, 100> children {};,我可以做到这一点,但我不想让我的代码工作(它已经工作了),我想确保它不会意外工作.
struct Node
{
int value;
std::array<Node *, 100> children;
}
更新:
这里的指针是垃圾:
struct Node
{
int value;
std::array<Node *, 100> children;
}
struct Node
{
Node() : children() {}
int value;
std::array<Node *, 100> children;
}
这里的指针是 nullptr:
struct Node
{
int value;
std::array<Node *, 100> children {};
}
struct Node
{
Node() : children{} {}
int value;
std::array<Node *, 100> children;
}
如果我错了,请纠正我。
【问题讨论】:
-
你想要的是使用
shared_ptr<Node *>而不是裸指针。只要您在任何地方(始终如一地)使用它们,最终的惊喜就会减少。
标签: c++ arrays initialization std