结构成员的默认值

时间:2016-05-22 02:23:59

标签: c++ c++11 initialization initializer

(我确定这个问题已经得到了解答,我只是不确定用正确的词语来问它。如果有人会告诉我正确的术语是什么太棒了!)

我在C ++中为数据结构类实现HashSet,并且我对有关结构的C ++语法有疑问。这是我的代码:

struct HashNode
{
    T value;
    HashNode* next = nullptr;
};

当调用next时,此代码是否会正确初始化nullptr指向new HashNode的指针?如果不是,next之后new HashNode的价值是多少?

1 个答案:

答案 0 :(得分:4)

  

当调用新的HashNode时,此代码是否会正确初始化指向nullptr的下一个指针?

是的,它会被初始化为nullptr。这是in-class brace-or-equal initializer (default member initializer)(从C ++ 11开始),如果在成员初始化列表中省略了成员,则会使用它。

  

通过默认的成员初始化程序,它只是一个大括号或   等于使用的成员声明中包含的初始化程序   如果在成员初始化列表

中省略了该成员      

如果成员具有默认成员初始值设定项并且也出现在   构造函数中的成员初始化列表,默认成员   初始化程序被忽略。